我在这里很新,所以如果我做错了呈现错误,我会道歉。
我想要3张桌子。两个是最后一个的子类。 为此,我想为子类使用鉴别器,但不在单个表中。
示例:
abstract class concrete class concrete_class table_one table_two table_three id info info info_For both info info type (table_two or table_three)
我在文档中找不到任何信息。 (也许不明白)
感谢您的帮助,
Gegko
答案 0 :(得分:1)
你可以这样做。
创建主要的抽象类 EntityA ,我通过Join定义了Inheretance,所有表都将共享相同的PK。
然后还定义该列将充当鉴别器类型,以及列数据的类型。
在每个子类上,你必须定义鉴别器列的实际值,因此hibernate知道需要构建哪个Object,如果 EntityB 或 EntityC 。
全部
@Entity
@Table(name = "table_one")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public abstract class EntityA {
@Entity
@Table(name = "table_two")
@DiscriminatorValue(value = "B")
public class EntityB extends EntityA {
...
}
@Entity
@Table(name = "table_three")
@DiscriminatorValue(value = "C")
public class EntityC extends EntityA {
...
}