2015-06-09 55 views
0

我正在用Java EE和JSF編寫Web應用程序。作爲數據鏈路層,我正在使用休眠。如何在休眠狀態下爲聯接子類添加額外約束

主站和從站類擴展設備類。他們使用設備表的主鍵 - 「DEVICE_ID」。我想知道哪個Slave記錄與主記錄相關。因此,我需要在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> 
... 

回答

0

您可以添加一列slave.hbm.xml這將是一個外鍵到主的實體,您需要定義提取類型,因爲Hibernate會處理,而你取一個從實體的加入和將主實體初始化

+0

可以在我的示例代碼上顯示解決方案嗎? –

+0

您可以將下面的代碼添加到slave.hbm.xml並更新類<多對一名稱=「master」 class =「deviceManagement.Master」 column =「MASTER_FK」 cascade =「save-update 「> 取決於你想要的方式 – AntJavaDev

相關問題