Postgres DB、Java with JPA 2.0、および eclipseLink があります。
私のToオブジェクトで:
@Column(name = "mask")
private Boolean mask;
IN DB: mask bit(4) DEFAULT B'1000'::"bit",
オブジェクトを保持したい場合:
原因: org.postgresql.util.PSQLException: エラー: 列 "マスク" はビット型ですが、式はブール型です ヒント: 式を書き直すかキャストする必要があります。
TO クラスで試してみます: - Boolean - BitSet(4) - String - Integer - Char
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 時間の Google 検索の後、次のことがわかりました: http://archives.postgresql.org/pgsql-bugs/2005-05/msg00014.php
そのpostgres BUGについて:
「実際に単一のブール型にマップされる「BIT」と呼ばれる JDBC 型を持つことは非常に混乱を招きます。JDBC の BIT が「bit」と呼ばれるサーバー型とは何の関係もないと仮定すると、それらが同じ名前なら、物事はより明確になるはずです。」