我有一个名为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。
在我抛出这个问题之前,我已经查阅了以下文章,但仍然无法得到任何线索。
答案 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 {
...
}
希望这个解决方案可以帮助他人。