现在我正在使用每个子类一个表的方法来为我的数据建模。我的层次结构的简化是:
abstract class Abstract {
/* common data stored in abstract */
}
class ConcreteTypeA1 extends Abstract {
/* extra data stored in concrete_type_a_1 */
}
class ConcreteTypeA2 extends Abstract {
/* extra data stored in concrete_type_a_2 */
}
class ConcreteTypeB extends Abstract {
/* extra data stored in concrete_type_b */
}
所以它执行三个外部连接,我在其中获取抽象类型的实例(实际上是十二个)。我昨天意识到 ConcreteTypeA1 和 ConcreteTypeA2 确实有相同的额外数据,它们只是表现不同,所以我想做的是通过将这两个类填充到一个表中并使用鉴别器列来减少连接数。我如何/可以做到这一点?
class Abstract {
/* common data stored in abstract */
}
abstract class ConcreteTypeA extends Abstract {
/* extra data stored in abstract_type_a */
}
class ConcreteTypeA1 extends ConcreteTypeA {
/* just behavior, no extra data, uses data in abstract_type_a */
}
class ConcreteTypeA2 extends ConcreteTypeA {
/* just behavior, no extra data, uses data in abstract_type_a */
}
class ConcreteTypeB extends Abstract {
/* extra data stored in concrete_type_b */
}
最佳答案
在父类上使用它
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="type",
discriminatorType=DiscriminatorType.STRING)
在具体类上使用
@DiscriminatorValue("TypeA")
关于java - 每个子类都有表的 Hibernate 鉴别器列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6202816/