例如,老虎是猫,但老虎不会有任何猫儿:
@Entity
class Cat {
@OneToMany(targetEntity=Cat.class)
Set<Cat> getChildren() { ... }
}
老虎:
@Entity
class Tiger extends Cat {
@OneToMany(targetEntity=Tiger.class)
Set<Cat> getChildren() { ... }
}
问题是,Hibernate不会允许这样的定义,如错误:
Repeated column in mapping for entity: com.bee32.plover.orm.Tiger column: parent (should be mapped with insert="false" update="false")
有什么想法吗?
答案 0 :(得分:2)
我们通过提供XML文件(根元素:...)来实现,但为什么你首先需要它呢?
通常情况下,你会限制Tiger类只接受同一类的孩子,所以getChildren()
会返回一组老虎。
在数据库中,你有一个鉴别器,无论如何都要定义数据集的实体类。因此,如果您将具有鉴别器“CAT”(或类似)的数据集指定为“TIGER”的子项,则在加载关联时会收到异常(因为该实体将属于Cat
类并且可以'被投射到Tiger
)。