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