1

私は JPA を初めて使用します。フィールド PostgreSQL oid タイプ (フィールド foto) に問題があります。Primefaces の ap:fileupload を介してインターフェイスからキャプチャした画像を保存しようとしていますが、成功していません。画像フィールドのデータ型 BigInteger をマップした IDE。彼らは次のことを試みました:

  • 私は BigInteger FileUploadEvent バイトを変換したかったのですが、私は困惑しました。

  • IDE が正しくマッピングされていないと考えて、OID のデータ型を byte [] に変更し、バイトが FileUploadEvent を返すようになり、エラーが発生しました。

    [EL 警告]: 01/12/2013 16:54:51.2 - ServerSession (1488263888) - 例外 [EclipseLink-3002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions 。ConversionException 例外の説明: 記述子 [RelationalDescriptor (Entity.Candidato -> [データベーステーブル (候補)])]、[クラス [B] に変換できませんでした。

前の 2 つのケースに注釈 @ Lob を追加しても機能しませんでした。以前の変換などを適用したかどうかはわかりません。

IDE: ネットビーンズ 7.2

データベース: PostgreSQL 9.0

永続性エンジン: EclipseLink 2.3.2

お役に立てれば幸いです。

テーブルBD

CREATE TABLE candidato
    (
      idcandidato serial NOT NULL,
      idtipoidentificacion integer,
      numeroidentificacion character varying(100),
      nombres character varying(100),
      foto oid,
      n_foto character varying(50),
      CONSTRAINT candidato_pkey PRIMARY KEY (idcandidato),
    )
    WITH (
      OIDS=FALSE
    );

BigInteger を使用したエンティティ候補 (Netbeans ジェネレーター)

@Column(name = "foto")
private BigInteger foto;

public BigInteger getFoto() {
    return foto;
}

public void setFoto(BigInteger foto) {
    this.foto = foto;
}

型が変更されたエンティティ候補 (byte[])

@Column(name = "foto")
private byte[] foto;

public byte[] getFoto() {
    return foto;
}

public void setFoto(byte[] foto) {
    this.foto = foto;
}
4

2 に答える 2

0

Postgres はどのように OID タイプを返しますか? ほとんどの場合、Java 型と OID 型の間で変換するには Converter を使用する必要があります。

http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_converter.htm#CHDEHJEBを参照して ください。

于 2013-04-22T13:10:33.827 に答える