我有 Postgres DB、Java with JPA 2.0 和 eclipseLink。
在我的 To 对象中:
@Column(name = "mask")
private Boolean mask;
在 DB: 掩码位 (4) 默认 B'1000'::"位",
当我想保留对象时:
原因:org.postgresql.util.PSQLException:错误:列“掩码”是位类型,但表达式是布尔类型提示:您将需要重写或强制转换表达式。
我在 TO 类中尝试: - 布尔值 - BitSet(4) - 字符串 - 整数 - 字符
我尝试使用 BitSet,这些: TO object: @Column(name = "mask") private BitSet mask;
public BitSet getMask() {
BitSet work = new BitSet(4);
work.set(0);
if (mask == null){
return work;
}
return mask;
}
public void setMask(BitSet mask) {
BitSet work = new BitSet(4);
work.set(0);
if (mask== null) {
this.mask= work;
} else {
this.mask= mask;
}
}
我怎样才能让它工作?
布尔方法不好,存储1位。我在谷歌搜索,失去了论坛。
经过 5 小时的谷歌搜索,我发现:http: //archives.postgresql.org/pgsql-bugs/2005-05/msg00014.php
它关于一个postgres BUG:
“拥有一个名为“BIT”的 JDBC 类型实际上映射到一个布尔类型是非常令人困惑的。如果您假设 JDBC 的 BIT与名为“bit”的服务器类型无关,并且它们具有同名,那事情应该就清楚了。”