3

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

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

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

- - 编辑 - -

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

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

4

3 回答 3

1

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

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

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

于 2012-12-14T20:51:37.133 回答
0

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

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

于 2012-12-18T01:39:49.193 回答
-1

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

虽然完全是疯狂的猜测。

于 2012-12-14T18:10:52.187 回答