[英]hibernate one to one on foreign key
我有一個主表是D1,它的唯一ID為d1Id。 d1Id唯一標識D1記錄,並且還是表上的主鍵。 我有表2,它是D2,它具有d2seq作為主鍵,但是D2也具有d1Id,這是唯一的,它對D1具有外鍵約束(我認為)。 但我可以肯定它是唯一的,並且ID是相同的。 我嘗試使用休眠方式進行D1調用時檢索d2值,但由於編譯時錯誤而無法為其獲取正確的hbm。
問題的底線是,我需要在2個表之間建立一對一關系,其中在第二個表中,聯接的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文件應如何用於此操作?
同樣,當我有了HBM時,我想通過DTO查詢D1時獲得D2信息。 我怎樣才能做到這一點?
為什么不能使用@ManyToOne
關系? 通常,它比@OneToOne
提供更大的靈活性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.