我有两个实体,Contract
和Customer
,其之间限定有双向one-to-一个关系:双向one-to-one关联:休眠取实体两次
在Customer.hbm.xml:
....
<many-to-one name="contract" class="Contract" fetch="select">
<column name="CONTRACTID" not-null="true" unique="true" />
</many-to-one>
在Contract.hbm.xml:
...
<one-to-one name="customer" class="Customer" property-ref="contract" />
当对集合迭代Customer
实体(在一些HQL查询获取),并为每个customer
访问的contract
领域,Hibernate并不两个额外的语句为每个“客户”:
- 懒取的
contract
这是OK我为我准备以后与batch-size
属性来优化延迟加载。 - 同样的读取与
SELECT ... FROM Customer WHERE CONTRACTID=?
的Customer
对象如何告诉Hibernate使用customer
实例,它已经出现在了会议?
编辑: 如果由于Customer
由CONTRACTID
代替2. Customer
的主键取出这是不可能的),这种情况下强加另一N + 1个问题,是吗?
双向一对一建议您只能为客户提供单一合同是否正确? –
是的,那是预期。 – rainer198