Java 如何在位(1)字段中保存布尔值

Java 如何在位(1)字段中保存布尔值,java,postgresql,hibernate,Java,Postgresql,Hibernate,我有一个读写表的代码,表中有一个位为(1)的字段。当我阅读此表时,hibernate将其转换为boolean很好,但当我尝试保存到它时,它会给我列的类型为bit,而表达式的类型为boolean。我无法将此字段更改为布尔值 到目前为止,我尝试将@Type搜索到hibernate的布尔类型,但没有成功 位[(n)]固定长度位串 而在一些数据库(MySQL和其他一些数据库)中,Postgres中的位(1)是布尔值。Postgres具有应使用的boolean数据类型。您有赋值(byte)0/(byte)

我有一个读写表的代码,表中有一个位为(1)的字段。当我阅读此表时,hibernate将其转换为
boolean
很好,但当我尝试保存到它时,它会给我
列的类型为bit,而表达式的类型为boolean
。我无法将此字段更改为
布尔值

到目前为止,我尝试将
@Type
搜索到hibernate的
布尔类型,但没有成功

位[(n)]固定长度位串


而在一些数据库(MySQL和其他一些数据库)中,Postgres中的
位(1)
布尔值。Postgres具有应使用的
boolean
数据类型。

您有赋值(byte)0/(byte)1。它将支持将boolean转换为byte。字节转换为布尔值。

您的实体如何准确地声明此字段/列?通常是受
@列(name=“thecolumnsname”)保护的布尔值myBoolean应该足够了。就像那样。它在我从表中读取值时起作用,但仅在我尝试写入表时才会抛出。我听说Hibernate在映射布尔值和位时遇到问题,但通常情况下,如果您可以将
位(1)
读取为
布尔值
,那么您应该能够将
布尔值
写入为
位(1)
-尤其是因为Java中没有与
位等效的代码。但是,您可以尝试不同的JavaType(mabye byte或short),看看您的数据库是否了解如何将
1::short
转换为
1::bit
。如果这是可能的,那么您可以实现您自己的,为什么要将
用于布尔值?这些列应该定义为
boolean
,因为我无法在postgresql上更改为boolean,我如何在java/hibernate中表示位字符串?至少使用自定义
UserType
,但我会尽最大努力在db中使用正确的数据类型。为什么你不能改变它呢?我问过使用它的人,他们说有大量的代码在使用它,如果他们改变了它,他们将不得不改变这些代码。就像12年前的C++代码一样,没有人关心如何正确地维护这些代码,这成为了一个如何不编写应用程序的极好例子。相信我,我无法在数据库端更改任何内容:(实际上MySQL不将“位”视为布尔值)。MySQL将所有内容视为布尔值-如果一个值可以转换为大于0的数值,则视为“真”,否则为假。
1thing
视为
true