【问题标题】:Hibernate mapping (inheritance)Hibernate 映射(继承)
【发布时间】:2011-11-22 01:18:35
【问题描述】:

我正在尝试在 Hibernate 中映射一些对象。其中一个对象是父亲,其他对象是孩子。换句话说,它们实现了继承。 父亲如下:

public class Person {

    private String id;
    private String name;
    private String surname;
    getters and setters ;
}

还有孩子……

public class Employee {
      private BigDecimal salary;
      private String seccion;
      private Employee employee;
      private  Customer customer;

      getters and setters
}

public class Customer {
     private BigDecima CreditLimit;

     getter and setter
}

然后...我想将这些类映射到以下数据库架构中...

表 人 ID / NAME / SURNAME / ID_EMPLOYEE / ID_CUSTOMER

员工 ID_PERSON / SALARY / SECCION

客户 ID_PERSON / CREDIT_LIMIT

我的想法是每个角色都可以是或不是客户/员工。换句话说,Customer 和 Employee 是 Person 的属性,但这些属性将存储在数据库的独立表中。

为了获得角色的信用额度,我可以做 persona.getCustomer().getCreditLimit();

始终控制此人是否是客户。

我希望你能帮助我,对不起,我的英语很差。我来自阿根廷。

提前致谢。

尼古拉斯

【问题讨论】:

  • 为什么PERSON 表有ID_EMPLOYEEID_CUSTOMER 列? EMPLOYEECUSTOMER中的ID_PERSON不是指PERSON.ID吗?

标签: hibernate inheritance mapping


【解决方案1】:

您可以将其与Person 上的两个One-To-One 关联进行映射。

附带说明,如果您可以控制该架构,我建议您使用Inheritance MappingTable-per-subclass,使用type 列作为person 表上的鉴别器。 Here 是继承映射的教程。

【讨论】:

    【解决方案2】:

    您正在寻找的是Polymorphic Mappingexample here 就是您所需要的。

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多