私はデータベースに格納するjpaエンティティを持っています。たとえば、jsonにいくつかのデータを含むフィールドがあります。クラスの代わりにJPAエンティティで使用するコンバーターの特定のインスタンスを指定する
@Convert(converter = JsonConverter.class)
public SomeClass entities;
とJsonConverter
なめらかようなものです:私は何をしたいか
@Converter(autoApply = true)
public class JsonListConverter implements AttributeConverter<T, String> {
}
は、このコンバータにいくつかのコンストラクタを追加し、いくつかのタイプを使用して初期化(および状態でもよい)することであり、それを使用しますjpa変換用。
クラスを指定する代わりに、@Convert
アノテーション(または他のアノテーション)を使用してコンバータの特定のインスタンスを指定することは可能ですか?
異なるエンティティではエンティティの配列やセットなどの異なるjsonフィールドを持つことができるので、すべてのケースをカバーする別々のコンバータを作成する必要はないため、これを行うことができます。コードはすべて同じですが、ジェネリック型と変換前に内部で初期化する必要のあるフィールドのみが異なります。
あなたは、コンバータにいくつかの状態を与えることができることをサポートする実装を使用しているので、もしJPA 2.2は、CDIを使用して 'AttributeConverters'に注入性を可能にします。それ以外は、いいえ。 –
私はデザインの誤解を感じていますが、そのような変換は可能ですが、エンティティレベルでは最もよく分かりません –
おそらくこの投稿は役に立ちますhttps://stackoverflow.com/a/45628612 – Cepr0