使用Hibernate时如何在布尔属性中插入空值?

Ped*_*olo 5 java null hibernate nullable

我有一个带有布尔属性的类.当我实例化并持久化此类时,Boolean属性存储为"false"值而不是可预期的"null".如何将布尔属性设置为"Null"?

Pas*_*ent 3

这是一个奇怪的问题。Boolean具有值的属性肯定null应该存储为NULL并且tinyint列类型允许这样做。我无法自己调查这个问题,但我会这样做:

首先,我将激活 Hibernate 的 DML 语句和 JBDC 参数的日志记录,以确认 Hibernate 确实通过了NULL(并且应该如此)。相关类别(第3.5 章日志记录)是org.hibernate.SQLorg.hibernate.type

如果第一个测试没有揭示问题,我会尝试通过一个简单的测试类进一步隔离它,使用原始 JDBC 插入一个Booleannull(并读取它)。如果这个测试不积极,那么我就会开始怀疑 JDBC 驱动程序。

顺便问一下,您使用什么 JDBC 驱动程序(和版本)?如果您使用的是 Microsoft 驱动程序,请尝试使用最新版本的jTDS(反之亦然)。