鉴别器但不是单个表

时间:2016-11-17 09:46:43

标签: java hibernate

我在这里很新,所以如果我做错了呈现错误,我会道歉。

我想要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

1 个答案:

答案 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 {
...
}

此处为官方文档http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html#inheritance-tablepersubclass-discriminator