您的位置:首页 > 数据库 > Oracle

Caused by: java.sql.SQLException: 无效的列类型: 16 及oracle 方言选择问题。

2016-08-04 16:45 567 查看
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版本以上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐