Caused by: java.sql.SQLException: 无效的列类型: 16
oracle,hibernate 保存数据时提示的错误。 is_deleted 默认值为 0 ,没有主动赋值给他。保存时报错。但是另外的类就没问题。 但是两者的写法,一个是注解写在私有变量上,一个是写在属性上面,难道和这个有关系?测试了一下,也不行。后来经过比较发现是没有下面这两个属性,加上即可。。
@DynamicInsert(true)
@DynamicUpdate(true)
但是又有一个新问题。我需要主动更新null值到某个字段,然后还是会报这个错误。
网上查了一下,把
hibernate.dialect 由org.hibernate.dialect.OracleDialect 改为 org.hibernate.dialect.Oracle9iDialect 。居然可以了。。。
参考网站:
http://stackoverflow.com/questions/27154954/boolean-column-type-nullable-true-in-hibernate
具体哪个版本的oracle用哪个方言的,下面的表:
可是到底用OracleDialect还是什么9i,10g呢。区别查了一下。
网上这么说的:
网址:http://www.oschina.net/question/135225_21203
8i和9都继承至Dialect,而9i继承8i,10i继承9i的方言,增加些新的特性,分页代码实现不太一样,不过效率不相上下。
还有需要注意的是,对应的方言和对应的hibernate版本要匹配。
参考:http://stackoverflow.com/questions/4369944/hibernate-dialect-for-oracle-database-11g
Use the Oracle 10g dialect. Also Hibernate 3.3.2+ is required for recent JDBC drivers (the internal class structure changed - symptoms will be whining about an abstract class).
用10g的方言 需要hibernate3.3.2版本以上。