我有两个类 Hotsheet 和 Invoice 以及它们之间的一对一关系。我需要在两个类中都有一个可以相互链接的属性。这是我的 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 将有一个列表,该列表始终只包含一张发票,而我需要一个包含发票的属性,而不是包含一张发票的列表。
最佳答案
您可以关注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>
请注意,为了创建一对一关系,我们使用多对一,并将约束唯一设置为true INVOICE_HOTSHEET
列。
BR。
关于mysql - Hibernate相互一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22168035/