3

アプリケーションでJSON文字列を使用して、多くの構成データを保存しています。これを BLOB としてデータベースに保存します。JSON 文字列はバイナリ表現 ( BSON ) に変換され、これを保存します。

実在物:

@Entity
@Table(name="TBL_CONFIG")
public class ConfigEntity {

    [...]

    @Column(name = "CONFIG")
    @JSON
    private String config;

    [...]
}

グローバル エンティティ リスナー:

public class JsonBinaryConversionListener {

    @PrePersist
    public void process() {
        // Check @JSON fields and for every field
        [...]
       field.set(objectConversion.toBson(field.get()));
        [...]
        // The field is String, the conversion gives us a byte array
    }

}

列 CONFIG は BLOB として設定されます。値を手動で変更する必要があるため、 @Lob アノテーションのみを使用すると機能しません。

JPAを通じてこれを実現する方法はありますか?

4

1 に答える 1

1

EclipseLink を使用している場合は、コンバーターを使用できます。

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

それ以外の場合は、プロパティ アクセス (get/set) メソッドを使用してデータを変換できます。

http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes#Conversion

JPA 2.1 ドラフトでは、コンバーターのサポートも提案されています。

于 2013-01-22T14:00:35.300 に答える