【发布时间】:2018-01-23 04:29:56
【问题描述】:
我们正在使用 mybatis 做数据库活动。将数据插入数据库时遇到问题。
问题:我在一个表中有 10 个字段,只有一个字段不为非空,它是主键 - 除了所有列都可以为空。 当我尝试仅插入 3 列时,以下查询会出现异常。如果有任何解决方案可以解决以下查询,请告诉我。
查询:
@Insert("insert into defendant (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)"
+ " values (#{defendantInfo.c1}, #{defendantInfo.c2}, #{defendantInfo.c3}, #{defendantInfo.c4}, #{defendantInfo.c10}, #{defendantInfo.c5}, #{defendantInfo.c6}, #{defendantInfo.c7}, #{defendantInfo.c8}, #{defendantInfo.c9})")
public void insertInToDefendant(DocumentEntryWrapper doc);
例外:java.sql.SQLException: Invalid column type: 1111
at oracle.jdbc.driver.OracleStatement.getInternalType(OracleStatement.java:3916) ~[ojdbc6-11.2.0.1.0.jar:11.2.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatement.setNullCritical(OraclePreparedStatement.java:4541) ~[ojdbc6-11.2.0.1.0.jar:11.2.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:4523) ~[ojdbc6-11.2.0.1.0.jar:11.2.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setNull(OraclePreparedStatementWrapper.java:1281) ~[ojdbc6-11.2.0.1.0.jar:11.2.0.2.0]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
注意:我观察到的是#{defendantInfo.c10} - 这里“defendantInfo.c10”为空,所以我们必须在执行查询之前做一些检查。但我不确定是否会进行检查。
【问题讨论】:
标签: oracle mybatis spring-mybatis