首页 文章

Discriminator列无法访问

提问于
浏览
0

在@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 回答

  • 0

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

    pubilc abstract PersonType getType();
    

相关问题