Hibernate:将多个类映射到同一个表

时间:2012-03-31 03:34:19

标签: hibernate

考虑一个包含3个字段的Transport表:Engine Wheels Wings

如果Engine和Wheels为非null且Wings为null,那么我希望将其映射到Vehicle类 如果Engine和Wings为非null且Wheels为null,那么我希望将其映射到Plane类

我一直在阅读有关区分子类的鉴别器,但在我读过的任何一个例子中,它们总是引用一个鉴别器值。因此,我想知道如何处理上述情况? 我只是实现单独的映射吗?我希望找到一个更简洁的方式。

由于

修改

刚刚查看了参考指南,并注意到null和not-null是有效值。所以这看起来像是解决了我的问题。将这个开放一段时间确认。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以为Plane和Vehicle类创建一个抽象父类,并使用@DiscriminatorFormula来编写一个公式,该公式生成一个值,以后可以将其注释为Plane的@DiscriminatorValue和车辆子类。

在Hibernate文档中看一下这个例子(虽然这个例子使用XML进行映射,但它与注释基本相同):

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/example-mappings.html#example-mappings-content-discrimination