java - Hibernate继承

标签 java database hibernate inheritance

我正在使用 hibernate 进行一个项目。 我得到了这两个文件:

Person.java

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "PROJ_TYPE")
@Table(name = "PROJECT")
public class Persoon {

    @Id
    @GeneratedValue
    protected int persoonsnummer;
    protected String voornaam;
    protected String achternaam;
    protected String adres;
    protected String geboortedatum;
    protected String telefoonnummer;
    protected String titel;

    // Getters and setters ommited for brevity
}

患者.java

@Entity
@DiscriminatorValue("P")
@Table(name="PATIENT")
public class Patient extends Persoon implements Serializable {   

    protected String allergieen;
    protected String bijzonderheden;

    // Getters and setters ommited for brevity
}

和 Test.java 来填充表格:

public class Test {
    public static void main(String[] args) {
        // get a session
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        // Start a tx
        session.beginTransaction();
        // create a person
        Persoon i = new Persoon();
        i.setVoornaam("Henk");
        i.setAchternaam("Oliebol");
        i.setAdres("1234AA Rotterdam");
        i.setGeboortedatum("10-10-1990");
        i.setTelefoonnummer("012345678");
        i.setTitel("Patient");
        session.save(i);

        // create a patient
        Patient p = new Patient();
        p.setAllergieen("geen");
        p.setBijzonderheden("geen");
        session.save(p);// create another car

        // commit the tx, 
        // so that it will be visible in the db
        session.getTransaction().commit();
    }
}

我想让病人继承人,请问有什么办法解决?

即做了一个人之后,我想把病人和人联系起来。

最佳答案

我通常不鼓励人们在 Hibernate 中使用继承/多态性,这是一个很好的例子。您从创建这种继承中获得的附加值超过了它产生的复杂性?只为 Person 和 Patient 使用一个实体,并使 Patient 包含一个人,即与一个人建立 M-1 关系,这不是更容易吗?

保持简单,尤其是使用 Hibernate。关系数据库不是用来处理继承的,它们是用来处理关系的,所以为什么要把它强加到它不适合的地方呢?

关于java - Hibernate继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433252/

相关文章:

java - JSP 中自动省略空格

ruby-on-rails - Rails 控制台 - 查找在某天创建的位置

java - Hibernate JPA 递归查询

hibernate - 使用Intellij IDEA在Grails应用程序中使用Hibernate控制台

android - 哪些数据库/数据存储支持 iOS 和 Android 的客户端数据同步?

java - 使用 Hibernate 从数据库检索列表时出现 ClassCastException

java - 在java中将二维数组转换为List?

java - 如何在运行时更改注释/Hibernate 验证规则?

java - 如何在maven中设置级联版本?

Python 基于磁盘的字典