如何在Hibernate中映射父类的bean类变量?

时间:2012-05-10 13:09:23

标签: java hibernate

我有一个名为Bean_A的Bean类,它映射到table_A,这个Bean_A类继承自基类bean,基类bean将有一个unique_reference_key变量,它将与Bean_A一起保存到数据库中类。我已经为table_A中的Bean_A和unique_reference_key字段准备好了hibernate文件。

我是否知道如何在hibernate中映射基类bean以确保在保存Bean_A对象时将unique_reference_key变量保存到数据库中?请注意,这个基本bean类没有映射到数据库中的任何表,并且没有这样的表“代表”基本bean。

在我抛出这个问题之前,我已经查阅了以下文章,但仍然无法得到任何线索。

  1. Hibernate simplifies inheritance mapping
  2. Hibernate Chapter 5.Basic O/R Mapping

2 个答案:

答案 0 :(得分:1)

如果添加了一些代码,您的描述会更加清晰。但我认为你只是在寻找the documentation中描述的MappedSuperclass注释:

  

5.1.6.4。从超类继承属性

     

有时通过a共享公共属性很有用   技术或商业超级类,不包括它作为常规   映射实体(即没有该实体的特定表)。为了这个目的   你可以将它们映射为@MappedSuperclass。

@MappedSuperclass
public class BaseEntity {
    @Basic
    @Temporal(TemporalType.TIMESTAMP)
    public Date getLastUpdate() { ... }
    public String getLastUpdater() { ... }
    ...
}

@Entity class Order extends BaseEntity {
    @Id public Integer getId() { ... }
    ...
}

答案 1 :(得分:0)

我找到了如何在hibernate中将基本bean属性映射到Bean_A的解决方案。

在休眠中:

<class name="com.dao.pojo.BaseBean" abstract="true">
   <id name="theId" type="string">
      <column name="primary_key" length="15" />
   </id>
   <property name="unique_ref_key" type="java.lang.String" column="unique_ref_key"/>

   <union-subclass name="com.dao.pojo.Bean_A" table="table_A" lazy="false">
      ...
   </union-subclass>
</class>

请注意 theId 最初来自Bean_A,并且已移至BaseBean。在table_A中创建了一个新字段unique_ref_key。

在JAVA中:

public abstract class BaseBean {
   private String theId;
   private String unique_ref_key;

   // getter and setter
}

public class Bean_A extends BeseBean {
   ...
}

希望这个解决方案可以帮助他人。