在@inheritance类型中加入
我有 class 人员,员工和学生
我在Person中有共同的列,如果我必须从person类访问它,那么getter setters for discriminator column
@Inheritance(strategy = InheritanceType.JOINED)@DiscriminatorColumn(name =“PERSON_TYPE”,discriminatorType = DiscriminatorType.STRING)public class Person
@Column(name =“RELATIONSHIP_TYPE”,insertable = false,nullable = false,updatable = false)private String relationType;
// getter和setters
@DiscriminatorValue(“STUDENT”)@ PrimaryKeyJoinColumn(name =“PERSON_ID”)公共班学生
@DiscriminatorValue(“EMPLOYEE”)@ PrimaryKeyJoinColumn(name =“PERSON_ID”)公共类员工
因此,当我保存Employee或Student记录然后检索Person记录时,它给我的鉴别器列值为NULL但在重新启动服务器后它给我相应的值
如果我手动设置鉴别器列值的值,然后保存并检索然后它给我的值(我需要管理设置鉴别器列值吗?)然后使用鉴别器列的好处是什么
为什么我不应该使用具有列类型的员工和学生的OneToMany关系,并且通过枚举我可以在列中输入透视值,我还将对该列应用延迟提取
请建议
在此先感谢Ramandeep Singh
1 回答
我有相同的用例,但它有点不同 . 我有一个枚举PersonType和一个在每个扩展类中重写的抽象属性 . Hibernate使用鉴别器来决定创建哪个类,并且类决定哪个是鉴别器值作为映射和属性 .