2
我有一個主表,它有一個唯一的ID爲d1Id的D1。 d1Id唯一標識D1記錄,並且也是表格中的主鍵。我有表2是D2,它有一個d2seq作爲主鍵,但D2也有d1Id,它是唯一的,在D1上有一個外鍵約束(我認爲)。但我確定它是唯一的,ID是一樣的。我正在嘗試使用hibernate進行D1調用時檢索d2值,並且由於編譯時錯誤,我無法獲得正確的hbm。在外鍵上一對一休眠
問題的底線是,我需要在兩個表之間建立一對一的關係,在第二個表中,連接的id不是表的主鍵。我見過的所有搜索google的例子都有這樣的情況:第二個表上的ID也是第二個表的主鍵。讓我告訴你我現在擁有的HBM文件。
<hibernate-mapping default-lazy="true"
package="com.xxx.xx.customer.dto">
<class name="D1" table="D1" dynamic-update="true">
<id name="dString" column="DID" type="java.lang.String"
unsaved-value="null" length="9">
<generator class="assigned"/>
</id>
...
<one-to-one name="d2" class="com.xxx.xx.customer.dto.D2" >
<!-- column name="d1Id" /-->
</one-to-one>
在我的D2第二HBM,我在這裏停留
<hibernate-mapping default-lazy="true" package="com.xxx.xx.customer.dto">
<class name="D2" table="D2" dynamic-update="true">
<id name="id" column="D2ID" type="integer">
<generator class="native">
<param name="sequence">D2SEQ</param>
</generator>
</id>
<id name="d1id" column="D1ID" type="java.lang.String"
unsaved-value="null" length="9">
<generator class="assigned"/>
</id>
我顯然不能使用第二個ID字段d1id這裏,因爲1>它不是一個主鍵和2>我已經使用過它。那麼我的HBM文件應該如何進行這項操作?
此外,一旦我有我的HBMs,我想獲得D2信息,而我通過DTO查詢D1。我怎樣才能做到這一點?