如何在hibernate中为join-subclass添加额外的约束

时间:2015-06-09 11:49:32

标签: java hibernate

我正在使用Java EE和JSF编写Web应用程序。作为数据链接层,我正在使用hibernate。

Master和Slave类扩展了Device类。它们使用Device表的主键 - “DEVICE_ID”。我想知道哪个Slave记录与Master记录有关。因此,我需要在Slave表中添加额外的约束。

我该怎么做?请帮我!任何反馈都表示赞赏!

Device.hbm.xml;

<hibernate-mapping>
<class name="deviceManagement.Device" table="DEVICE">
    <id name="DEVICE_ID" type="int">
        <column name="DEVICE_ID" />
        <generator class="increment" />
    </id>
    <property name="DEVICE_NAME" type="java.lang.String">
        <column name="DEVICE_NAME" unique="true" />
    </property>
    <property name="DEVICE_TYPE" type="java.lang.String">
        <column name="DEVICE_TYPE" />
    </property>
...

Slave.hbm.xml;

<hibernate-mapping>
<joined-subclass name="deviceManagement.Slave" extends="deviceManagement.Device" table="SLAVE" lazy="false">
    <key>
        <column name="DEVICE_ID" />
    </key>
    <property name="LUMINAIRE_MODEL" type="java.lang.String">
        <column name="LUMINAIRE_MODEL" />
    </property>
...

Master.hbm.xml;

<hibernate-mapping>
<joined-subclass name="deviceManagement.Master" extends="deviceManagement.Device" table="MASTER" lazy="false">
    <key>
        <column name="DEVICE_ID" />
    </key>
    <property name="HOST_NAME" type="java.lang.String">
        <column name="HOST_NAME" />
    </property>
...

1 个答案:

答案 0 :(得分:0)

你可以在slave.hbm.xml中添加一个列作为Master实体的外键,你必须定义fetch类型,所以hibernate将在你获取slave实体时处理连接并拥有master实体初始化