ORMに休止状態と注釈を使用しています。すべての Bean のインターフェイスがあり、関係に targetEntity を使用しています。getter が Bean ではなくインターフェイスを返すため、hibernate は型を派生できません。
埋め込み Bean に対して MappingException (型を判別できませんでした) が発生します。
@Entity(name="FieldBean")
public class FieldBean implements Field {
...
}
@Embeddable
public class FacetBean implements Facet {
...
@ManyToOne(targetEntity = FieldBean.class)
@JoinColumn(name = "field_id")
public Field getField() {
return field;
}
}
@Entity(name = "Chart")
public class ChartBean implements Chart {
@Embedded
@AssociationOverride(
name = "field",
joinColumns = @JoinColumn(name = "category_facet_field_id")
)
public Facet getCategoryFacet() {
return categoryFacet;
}
}
MappingException: Could not determine type for: Field, at table: chart, for columns: [org.hibernate.mapping.Column(field)] が発生します。
プロパティと getter/setter の宣言にインターフェイスの代わりに Bean を使用すると問題は解決しますが、インターフェイスの使用に固執したいと思います。プロパティ宣言だけに Bean を使用しても問題は解決しません。
誰かが私を正しい方向に向けることができますか?