discriminator列不使用每个子类的表

时间:2014-03-24 10:31:03

标签: hibernate

JARS used大家好,

我在表中使用每个子类继承映射的discriminator列。这是父类

的条目
@Entity  
@Table(name = "employee105")
@Inheritance(strategy=InheritanceType.JOINED)   
@DiscriminatorColumn(name="emp_type" , discriminatorType= DiscriminatorType.STRING) 

和子类的条目如下:

@Entity  
@Table(name="contractemployee105")
@DiscriminatorValue("P")
@PrimaryKeyJoinColumn(name="ID") 

@Entity  
@Table(name="regularemployee105")
@DiscriminatorValue("T")
@PrimaryKeyJoinColumn(name="ID") 

我知道我的代码是正确的并且正在生成表但是在插入查询中没有创建鉴别器列。我正在使用图片中所示的罐子。请让我知道这个问题。我怀疑这是JARS或hibernate版本的问题。感谢

2 个答案:

答案 0 :(得分:1)

使用每个子类的表,您不需要鉴别器。 Hibernate通过在相关表中查找记录来确定子类。

答案 1 :(得分:1)

你可能怀疑你的hibernate版本有问题。 Bug HHH-6911就是这个问题,并在Hibernate 4.2.9,4.3.1中得到了解决。如果您的hibernate版本较早,则可能需要升级。 (看看你的罐子清单,情况确实如此。)

正如Stefan所说,在这种情况下,Hibernate不需要鉴别器,但JPA规范说明如果指定它应该被允许并保持。