【问题标题】:How do you store a Java Boolean type variable in a PostgreSQL table with corresponding column data type defined as "bit"?如何将 Java 布尔类型变量存储在 PostgreSQL 表中,相应的列数据类型定义为“位”?
【发布时间】:2017-07-28 14:00:41
【问题描述】:

现在,我的 Java 类中变量的数据类型是“布尔”。我想将它存储在 PostgreSQL 表中。我要存储数据的列的数据类型定义为“位”。但是当我尝试保存具有这个布尔变量的对象时,我得到了错误:

ERROR: column "isdeleted" is of type bit but expression is of type boolean

我正在使用 Hibernate 来存储数据。 我的代码 sn-p 用于定义和映射我的变量:

@Column(name = "isDeleted")
private boolean isDeleted;

如何保存我的对象?谢谢!

【问题讨论】:

标签: java postgresql hibernate


【解决方案1】:

请在 Postgres 中使用正确的 boolean 类型。虽然可以将布尔值存储在比特流中,但这会使以后的使用变得复杂。

使用通常的boolean,您可以这样做:

SELECT * FROM table WHERE isdeleted;

而对于 bit 类型,您必须进行按位运算:

SELECT * FROM table WHERE isdeleted > B'0'

【讨论】:

  • 感谢您的回复!我知道并且我想这样做,但这是给我的规范。我无法对表架构进行任何更改。
【解决方案2】:

尝试使用 BOOLEAN 数据类型,像这样定义 @Column 注释:

@Column(name = "isDeleted", columnDefinition = "boolean default true", nullable = false)
private boolean isDeleted = true;

另外,我认为 NHibernate 中的列类型是 TrueFalse,它需要“T”或“F”。 您需要将列类型更改为布尔值。试试这个link

【讨论】:

  • 抱歉,无法更改规格!
【解决方案3】:

尝试在您的代码中添加 PostgreSQL 方言 "org.hibernate.dialect.PostgreSQL方言"

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2015-08-25
    • 2018-02-14
    • 2021-10-11
    • 1970-01-01
    • 2020-06-28
    • 2018-10-01
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多