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