1

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

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

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

  1. Hibernate 简化了继承映射
  2. Hibernate Chapter 5.Basic O/R Mapping
4

2 回答 2

1

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

5.1.6.4。从超类继承属性

这有时有助于通过技术或业务超类共享公共属性,而不将其作为常规映射实体(即该实体没有特定表)。为此,您可以将它们映射为@MappedSuperclass。

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

@Entity class Order extends BaseEntity {
    @Id public Integer getId() { ... }
    ...
}
于 2012-05-10T14:45:28.337 回答
0

我找到了如何在休眠中将基本 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 {
   ...
}

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

于 2012-05-16T02:24:10.857 回答