固定の定数セットを持つInk
クラスがあります。彼らは変わることはなく、私はこのクラスをテーブルとして保存したくありません。Hibernate:テーブルを持たないフィールドでクラスをロードする
public final class Ink {
public static final Ink Y = new Ink(91001, 'y', 90.70, -5.23, 94.37), "Yellow");
public static final Ink M = new Ink(92001, 'm', 48.19, 72.01, -1.78), "Magenta");
public static final Ink C = new Ink(93001, 'c', 56.46, -41.00, -43.50), "Cyan");
public static final Ink K = new Ink(94001, 'k', 18.64, 1.80, 5.21), "Black");
public int code;
public static Ink forCode(int code) {
//...
}
//...
}
他のクラスは、Ink ink
又はCollection<Ink> inks
フィールドを有することができるが、すべてのink
インスタンスは、そのcode
値の単純な整数列としてマッピングされなければなりません。 Code
は、外部キーなどではありません。それは、いつでもInk
インスタンスを取得できる単純な整数値です。
@Entity
public class Order {
//...
@OneToMany
public Set<Ink> inks;
//...
}
私はそのcode
とバック
@Converter(autoApply = true)
public class InkConverter implements AttributeConverter<Ink, Integer> {
@Overrcodee
public Integer convertToDatabaseColumn(Ink ink) {
return ink.code;
}
@Overrcodee
public Ink convertToEntityAttribute(Integer code) {
return Ink.forCode(code);
}
}
でInk
クラスを復元するために、コンバータを使用することができますが、質問です:まだテーブルとしてクラスをマッピングから休止状態を防ぐ方法
とcode
列からクラスフィールドを読み込みましたか?
を追加準拠しているJPAの実装はそれを行いません。 –