【发布时间】:2020-02-19 16:06:28
【问题描述】:
我有一个代码可以读取和写入一个表,该表有一个 bit(1) 字段。当我阅读此表时,休眠将其转换为boolean 就好了,但是当我尝试保存到它时,它给了我column is type bit but expression is type boolean。我不能将此字段更改为boolean。
到目前为止,我尝试将 @Type 与 hibernate 的 BooleanType 联系,但无济于事。
【问题讨论】:
-
您的实体如何准确地声明此字段/列?通常
@Column (name= "thecolumnsname") protected Boolean myBoolean;就足够了。 -
就是这样。当我从表中读取值时它可以工作,但只有在我尝试写入表时才会抛出这个。
-
好吧,我听说 Hibernate 在映射布尔值和位时存在问题,但通常如果您可以 读取
bit(1)为Boolean,那么您应该能够 将Boolean写入 为bit(1)- 特别是因为Java 中没有与bit等效的内容。但是,您可以尝试不同的 JavaType(mabye byte 或 short)并查看您的数据库是否了解如何将1 :: short转换为1 :: bit。如果这是可能的,那么您可以实现自己的converter -
你为什么使用
bit来表示布尔值?该列应定义为boolean
标签: java postgresql hibernate