Hibernateマッピングでワイルドカードを使用してジェネリックコレクションを管理する最適な方法は何ですか? たとえば、ComponentParent
,ComponentChild
およびContainer
クラスがあります。私は下の例をしようとすると、私はエラーを取得する:ワイルドカードとHibernateを使用した汎用コレクション
Caused by: org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined
は、エンティティは、あなたが「ワイルドカードを持つジェネリックコレクション」として、それを維持したいのはなぜ
@Entity
@Inheritance
@DiscriminatorColumn(name = "TYPE")
@Table(name = "COMPONENT")
class abstract ComponentParent {
private Long id;
...
}
@Entity
@DiscriminatorValue(name = "CHILD")
class ComponentChild extends ComponentParent {
...
}
@Entity
@Table(name = "CONTAINER")
class abstract Container {
private Long id;
@OneToMany
@JoinColumn(name = "containerId")
private List<? extends ComponentParent> components;
}
@Entity
@DiscriminatorValue("CONC")
class ConcreteContainer {
public List<ChildComponents> getComponents() {
return components;
}
}
こんにちはあなたは正しいComponentChildはComponentParentを拡張しています(私はそれを修正しました)。私はオブジェクトタイプを扱う方法で質問を更新しました。具体的なコンポーネントタイプを知っているContainerの実装が必要です。 –