很不幸,一个遗留系统的数据库是oracle817,要使用最新的jdbc版本,比如10g(方便解决CLOB)之类的,就得经常测试兼容性问题。
不巧碰上了这个问题,如同:
Hibernate 中插入Sequence主键数字变成科学计数法
一步一步排查
1/换8i驱动,没问题
2/保留10g驱动,使用jdbc来插入,没问题
3/保留10g驱动,当去掉timestame映射的Date型字段的时候,没问题
总之是一个很难解释,很难总结google关键词的问题
柳暗花明
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1566
Timestamp映射到Date型字段,居然能造成其他字段出错,还是有点匪夷所思。
hibernate不解决这个问题之前,在环境变量中加入oracle.jdbc.V8Compatible=true。问题解决。CLOB直接作为string来读写也正常。