Hibernate + PostgreSQL:Null布尔值返回为'true'

时间:2012-12-14 18:00:35

标签: java hibernate postgresql jpa boolean

我们在Hibernate + PostgreSQL上遇到了一个奇怪的错误:

我们有一个先前在Firebird,MySQL和Derby上测试的Hibernate 3.6应用程序,现在我们正试图让它在PosgreSQL 9.2上运行;我们遇到了以前数据库中没有发生过的各种奇怪的问题,其中有一个错误,即Hibernate将 null 值的可空布尔字段加载为,而不是 null 。持久化类的相应属性都是 java.lang.Boolean ,没有额外的anotations。

关于什么可能导致这种行为的任何想法?

---编辑---

最后有时间做一个更完整的调试:结果证明它根本不是Hibernate错误,而是在我们的代码库的一角埋藏了一个LoadEventListener。 :P

无论如何,感谢您的建议。

3 个答案:

答案 0 :(得分:1)

首先,确保这不是测试其他PostgreSQL版本的错误。

你试过PostgreSQL 9.1吗? 9.2它很新。 9.1它更稳定。

Hibernate和其他的持久性框架在发布新的SGBD版本时会引发一些错误。

答案 1 :(得分:0)

最后有时间做一个更完整的调试:结果证明它根本不是Hibernate错误,而是在我们的代码库的一角埋藏了一个LoadEventListener。 :P

无论如何,感谢您的建议。

答案 2 :(得分:-1)

我唯一的猜测是,因为PostgreSQL可以将空值存储为“未知”,当它转换回java.lang.Boolean时,该值以某种方式映射到“true”。

但总猜不过。