InheritanceType.JOINED中的判别器

mil*_*lbr 19 hibernate

是否有可能强制hibernate使用discriminator列进行继承类型的连接?根据JPA2.0规范,这应该是可能的但我无法在hibernate中实现它.

例:

@Inheritance(strategy = InheritanceType.JOINED)
@ForceDiscriminator
@DiscriminatorColumn(name="TYPE")
@Entity
public class Parent

@Entity
@DiscriminatorValue("C")
public class Child extends Parent
Run Code Online (Sandbox Code Playgroud)

当使用hibernate.hbm2ddl.auto create时,这甚至不会在表PARENT中创建列TYPE.

我知道InheritanceType.JOINED在没有定义鉴别器列的情况下工作,但是它非常无效,因为当在鉴别器列中使用信息时,hibernate需要在父节点和所有子节点之间创建连接而不是父节点和一个子节点.

小智 14

我已经使用SINGLE_TABLEDiscriminator和SecondaryTable子类来做这件事.IE

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE")
@Entity
public class Parent

@Entity
@DiscriminatorValue("C")
@SecondaryTable(name = "child", pkJoinColumns = {@PrimaryKeyJoinColumn(name="id", referencedColumnName = "id")})
public class Child extends Parent
Run Code Online (Sandbox Code Playgroud)

添加新子类时,添加一个包含相关扩展数据字段的新表.

  • 这似乎与我无关. (4认同)

Jin*_*ekh 1

您想使用@Inheritance(strategy=InheritanceType.SINGLE_TABLE)吗?

  • 据我所知,不支持有关联合继承的鉴别器列。让我为您搜索一下 hibernate 文档。 (2认同)