加入
我有班级人员,员工和学生
我在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
答案 0 :(得分:0)
我有相同的用例,但它有点不同。我有一个枚举PersonType和一个在每个扩展类中重写的抽象属性。 Hibernate使用鉴别器来决定创建哪个类,并且类决定哪个是鉴别器值作为映射和属性。
pubilc abstract PersonType getType();