2014-03-04 152 views
0

我有兩個類Hotsheet和發票和它們之間的一對一關係。我需要在兩個類中都有一個屬性,這兩個類將鏈接到對方。這是我的Invoice類的xml映射。休眠相互一對一的關係

<hibernate-mapping> 
<class name="...Invoice" table="invoices"> 
    <id name="invoiceId" column="INVOICE_ID"/> 

    ... 

    <many-to-one 
      name="hotsheet" 
      column="HOTSHEET"> 
    </many-to-one> 
</class> 
</hibernate-mapping> 

發票有鏈接到其Hotsheet外鍵,我還需要在Hotsheet一個屬性,它都會有發票。如果Hotsheet能有幾發票我就這樣它映射:

<hibernate-mapping> 
<class name="package.Hotsheet" table="hotsheets"> 
    <id name="hotsheetId" column="HOTSHEET_ID"/> 

    ... 

    <bag name="invoices"> 
     <key column="HOTSHEET"/> 
     <one-to-many class="...Invoice"/> 
    </bag> 
</class> 
</hibernate-mapping> 

但這是,Hotsheet會有這將永遠只包含一個發票的列表,而我需要發票的屬性,而不是一個發票清單。

+0

請更相關,並更詳細地描述你所指的是什麼?一對一映射有什麼問題? – tmarwen

+0

我期望在兩個對象之間創建一對一的關係。我知道如何爲多對一的關係做這件事,這將給我發票清單。但是這必須是一對一的,你能告訴我一個例子如何映射這種情況下的一對一關係嗎? –

回答

2

您可以按照this link的方式與一對一在Hibernate中進行映射。所以,你HBM文件可能如下:

<hibernate-mapping> 
    <class name="...Invoice" table="invoices"> 
    <id name="invoiceId" column="INVOICE_ID"/> 

    ... 

    <many-to-one name="hotsheet" class="package.Hotsheet" column="INVOICE_HOTSHEET" not-null="true" cascade="all" unique="true" /> 
    </class> 
</hibernate-mapping> 


<hibernate-mapping> 
    <class name="package.Hotsheet" table="hotsheets"> 
    <id name="hotsheetId" column="HOTSHEET_ID"/> 

    ... 
    <one-to-one name="invoice" 
    property-ref="hotsheet"/> 
</class> 
</hibernate-mapping> 

注意,創建一到一個的關係,我們使用多到一個與約束對於列INVOICE_HOTSHEET,將唯一設置爲true。

BR。

+0

謝謝,這是我所需要的,無法在互聯網上找到它。在ono-to-one中的property-ref屬性幫助了我。 –

+0

你總是歡迎@ user1829662 :) – tmarwen