3

hibernate/postgresql 9.1.1 で BLOB フィールドを作成したい

ログに次のメッセージが表示されるのはなぜですか。

INFO  [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (MSC service thread 1-5)
HHH000424: Disabling contextual LOB creation as createClob() method threw error : 
java.lang.reflect.InvocationTargetException

これがエラーではないことはわかっています。

Hibernate 4.1 のドキュメント:

"@Lob indicates that the property should be persisted in a Blob or a Clob depending
on the property type: java.sql.Clob, Character[], char[] and java.lang.String will be
persisted in a Clob. java.sql.Blob, Byte[], byte[] and Serializable type will be persisted in a Blob."

私は自分のフィールドを次のように宣言します:

@Lob
@Type(type = "org.hibernate.type.MaterializedClobType")
@Basic(fetch=javax.persistence.FetchType.LAZY)
@Column(name = "`ACTA_CERTIFICACION`")
public byte[] getActacertificacion() {
    return actacertificacion;
}
/**
 * @param actacertificacion
 * @uml.property  name="actacertificacion"
 */
public void setActacertificacion(byte[] actacertificacion) {
    this.actacertificacion = actacertificacion;
}

しかし、データベースでは、テキスト フィールドのように作成されます。

"ACTA_INCREMENTOSUSTITUCION" text

どうすればいいですか?バイトフィールドなどを作成したいです。

4

1 に答える 1

4

textデータベースで使用しているためCLOB、POJOクラスでtypeを使用する必要があります。これをマッピングする場合は、以下のようにPOJOにプロパティを追加するだけです。

@Column(name="ACTA_INCREMENTOSUSTITUCION")
@Clob
private Clob tect;

これで、要件に応じて、ここで説明するように、このClobbyte[]に変換できます

于 2012-05-01T12:12:10.013 に答える