Discriminator列无法访问

时间:2012-08-22 08:23:57

标签: hibernate

@inheritance中的

加入

我有班级人员,员工和学生

我在Person中有共同的列,如果我必须从人类访问它,那么getter setter for discriminator列

@Inheritance(策略= InheritanceType.JOINED) @DiscriminatorColumn(name =“PERSON_TYPE”,discriminatorType = DiscriminatorType.STRING) 公共类人员

@Column(name =“RELATIONSHIP_TYPE”,insertable = false,nullable = false,updatable = false) private String relationType;

// getters and setters

@DiscriminatorValue( “学生”) @PrimaryKeyJoinColumn(名称= “PERSON_ID”) 公共班学生

@DiscriminatorValue( “EMPLOYEE”) @PrimaryKeyJoinColumn(名称= “PERSON_ID”) 公共级员工

所以当我保存Employee或Student记录然后检索Person记录时,它给我的鉴别器列值为NULL 但重新启动服务器后,它会相应地给我值

如果我手动设置鉴别器列值的值,然后保存并检索然后它给我的值(我是否需要设置鉴别器列值?) 然后使用鉴别器列

有什么好处

为什么我不能使用OneToMany关系的人与员工和学生有列类型和通过枚举我可以输入透视值到列 我还将在列上应用延迟提取

请建议

先谢谢 Ramandeep Singh

1 个答案:

答案 0 :(得分:0)

我有相同的用例,但它有点不同。我有一个枚举PersonType和一个在每个扩展类中重写的抽象属性。 Hibernate使用鉴别器来决定创建哪个类,并且类决定哪个是鉴别器值作为映射和属性。

pubilc abstract PersonType getType();