我们在Hibernate + PostgreSQL上遇到了一个奇怪的错误:
我们有一个先前在Firebird,MySQL和Derby上测试的Hibernate 3.6应用程序,现在我们正试图让它在PosgreSQL 9.2上运行;我们遇到了以前数据库中没有发生过的各种奇怪的问题,其中有一个错误,即Hibernate将 null 值的可空布尔字段加载为是,而不是 null 。持久化类的相应属性都是 java.lang.Boolean ,没有额外的anotations。
关于什么可能导致这种行为的任何想法?
---编辑---
最后有时间做一个更完整的调试:结果证明它根本不是Hibernate错误,而是在我们的代码库的一角埋藏了一个LoadEventListener。 :P
无论如何,感谢您的建议。
答案 0 :(得分:1)
首先,确保这不是测试其他PostgreSQL版本的错误。
你试过PostgreSQL 9.1吗? 9.2它很新。 9.1它更稳定。
Hibernate和其他的持久性框架在发布新的SGBD版本时会引发一些错误。
答案 1 :(得分:0)
最后有时间做一个更完整的调试:结果证明它根本不是Hibernate错误,而是在我们的代码库的一角埋藏了一个LoadEventListener。 :P
无论如何,感谢您的建议。
答案 2 :(得分:-1)
我唯一的猜测是,因为PostgreSQL可以将空值存储为“未知”,当它转换回java.lang.Boolean时,该值以某种方式映射到“true”。
但总猜不过。