私はこれらの2つのクラスを持っています:
@Entity
public abstract class Compound {
@OneToMany(fetch = FetchType.EAGER, mappedBy="compound",
targetEntity=Containable.class, cascade = CascadeType.ALL)
private Set<Containable> containables = new HashSet<>();
}
@Entity
public abstract class Containable {
@ManyToOne(optional=true, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Compound compound;
}
タイプセーフな方法で達成したいのは、Compoundの特定の実装は、Containableの特定の実装のみを受け入れ、その逆も同様です。
どうすればこれを達成できますか?
編集:
私はすでにasenovmからの解決策を持っていましたが、それが実際に正しいものであることを再確認したかっただけです。
私のフォローアップの質問は、class Compound<T extends Containable>
Containableclass Containable<T extends Compound>
とCompoundがrawタイプであるか、それとも間違っているかということです。class Compound<T extends Containable>
Tは実際には包含可能であり、他には何もないからです。