簡體   English   中英

在外鍵上一對一休眠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM