0
考慮以下實體。我打算讓孩子班級參考任何兩個衍生食品類(本地食品或外國食品)。這是一個人爲設計的例子,我的真實域對象非常複雜,因此,例如組合和使用FoodType列不是一種選擇,因爲兩個Food子類只有少數特徵相似。將Hibernate/JPA映射到基類
@MappedSuperclass
public abstract class Food {
}
@Entity
public class LocalFood extends Food {
private long id;
private String name;
}
@Entity
public class ForeignFood extends Food {
private long id;
private String name;
}
@Entity
public class Child {
private Food food; //Base Class needed here
@ManyToOne()
public Food getFood() {
return food;
}
}
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.sample.Child.food references an unknown entity: com.sample.Food
既不使用繼承和鑑別器。
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Food {
private long id; // set , get (Auto gen)
}
是否有可能讓這種映射工作?
您必須將Food類映射爲具有繼承策略的實體,才能做到這一點。你這樣做的例外是什麼? – 2012-07-16 10:46:42
我得到'引起:java.lang.ClassCastException:org.hibernate.mapping.SingleTableSubclass 引起:java.lang.ClassCastException:org.hibernate.mapping.JoinedSubclass'。對於每個InheritanceType。 – lawal 2012-07-16 11:18:30
這是由映射問題引起的。例如,請參閱https://forum.hibernate.org/viewtopic.php?f=1&t=1005287。這個ID應該在根類(Food)中聲明。不在每個小類中。 – 2012-07-16 11:47:46