以一下是Insert的SQL语句增加时报错“无效的列类型”,也没用说是哪个属性,真的痛苦。
INSERT INTO SCOTT.PM_SUPPLIER (
SUPPLIER_ID,
SUPPLIER_CODE,
SUPPLIER_NAME,
BRAND_ID,
BRAND_NAME,
CONTACTOR,
TELEPHONE,
MOBILE,
POST_CODE,
FAX,
EMAIL,
ADDRESS,
REMARK,
DELETE_FLG,
CREATE_USER,
CREATE_TIME,
UPDATE_USER,
UPDATE_TIME,
USE_FLG,
QQ,
COOPERATION_START_TIME,
REGISTERED_CAPITAL,
DEPUTY,
IDENTITY_CARD,
OBJECT_APTITUDE,
ORG_CODE,
TAX_REGISTRATION,
SUPPLIER_TYPE,
PROP_TYPE,
ACCOUNT_NAME,
DEPOSIT,
ACCOUNT_NO,
PROJECT_TYPE,
DISCOUNT_RATE,
SUPPLIER_SAP_CODE,
TAX_RATE
)
VALUES
(
SUPPLIER_ID.nextval,
# { supplierCode }, # { supplierName }, # { brandId }, # { brandName }, # { contactor }, # { telephone }, # { mobile }, # { postCode }, # { fax }, # { email }, # { address }, # { remark }, '0',
'系统管理员(寐)',
TO_DATE (
'2014-12-17 10:35:32',
'SYYYY-MM-DD HH24:MI:SS'
),
'admin',
TO_DATE (
'2015-01-28 14:23:54',
'SYYYY-MM-DD HH24:MI:SS'
),
'0',
# { qq }, NULL,
# { registeredCapital }, # { deputy }, # { identityCard }, # { objectAptitude }, # { orgCode }, # { taxRegistration }, '1',
# { propType }, # { accountName }, # { deposit }, # { accountNo }, # { projectType }, # { discountRate,
jdbcType = NUMERIC }, # { supplierSapCode }, # { taxRate }
)
报错原因
上面SQL语句中的倒数第三个属性discountRate,在Oracle中的类型是NUMBER,在jsp使用对象去收集增加的数据时(discountRate)单词打错了,所有导致没用值,默认就为NULL了,而在Oracle中是number类型,添加一个NULL就不行了,所有指定它是number类型,即便是没收集到数据也是number类型的默认值。
注意:input标签中使用disabled=“disabled”,通过request.getParameter("name")得不到文本框中的内容,也会出现空的情况。
解决方法:
指定它是NUMBER类型
#{discountRate,jdbcType=NUMBER}
更恶心的是MyBatis中对应的不是NUMBER是NUMERIC
所以正确的写法是
#{discountRate,jdbcType=NUMERIC}