![](/img/trans.png)
[英]How Hibernate match entity in one-to-one relation, despite of absence of a foreign Key?
[英]Hibernate mutual one-to-one relation
我有两个类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>
Invoice有一个链接到其Hotsheet的外键,我还需要Hotsheet中的一个属性,该属性将具有其Invoice。 如果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将有一个列表,它将始终只包含一个Invoice,而我需要一个带Invoice的属性,而不是带有一个Invoice的列表。
您可以在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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.