我有Postgres DB,带有JPA 2.0的Java和eclipseLink。
在我的To对象中:
@Column(name = "mask")
private Boolean mask;
IN DB: 掩码位(4)DEFAULT B'1000'::“bit”,
当我想要预先确定对象时:
引起:org.postgresql.util.PSQLException:错误:列“mask”的类型为bit,但expression的类型为boolean 提示:您需要重写或转换表达式。
我在TO课中尝试: - 布尔值 - BitSet(4) - 字符串 - 整数 - Char
使用BitSet我试试,这些: 反对: @Column(name =“mask”) 私有BitSet掩码;
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位。 我在google搜索,丢失了论坛。
谷歌搜索5小时后,我发现: http://archives.postgresql.org/pgsql-bugs/2005-05/msg00014.php
关于postgres BUG:
“实际映射到单个布尔类型的JDBC类型称为”BIT“非常令人困惑。如果您认为JDBC的BIT没有没有与名为”bit“的服务器类型,并且只是巧合,他们有相同的名字,那么事情应该更清楚。“
答案 0 :(得分:1)
如果通过原始JDBC访问您的字段,将返回哪种类型?
您是否尝试将其映射为String,发生了什么错误? 您可能需要使用@Converter来转换类型。