我有一个名为 Bean_A 的 Bean 类映射到table_A,这个Bean_A类继承自一个基 bean 类,基 bean 类将有一个 unique_reference_key 变量,该变量将与 Bean_A 类一起保存到数据库中。我已经为table_A中的Bean_A和unique_reference_key字段准备好了休眠文件。
我可以知道如何在休眠中映射基 bean 类以确保在保存Bean_A对象时将此unique_reference_key变量保存到数据库中?请注意,这个基 Bean 类没有映射到数据库中的任何表,并且没有这样的表"表示"基础 bean。
在我抛出这个问题之前,我已经查阅了以下文章,但仍然无法获得任何线索。
- 休眠简化了继承映射
- 休眠第5章.基本O/R映射
如果你添加一些代码,你的描述会更清晰。但我认为您只是在寻找文档中描述的 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() { ... }
...
}
我找到了如何在休眠中将基础 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。
在爪哇中:
public abstract class BaseBean {
private String theId;
private String unique_ref_key;
// getter and setter
}
public class Bean_A extends BeseBean {
...
}
希望这个解决方案可以帮助其他人。