我正在尝试在Hibernate中将一对一关系映射为“零或一个”关系。我想我可能已经找到了使用多对一方法。
class A { private B b; // ... getters and setters } class B { private A a; }
A类的映射指定:
<many-to-one name="b" class="B" insert="false" update="false" column="id" unique="true"/>
B类的映射指定:
<one-to-one name="a" class="A" constrained="true"/>
我想在数据库中找不到B的匹配行时b为null。所以我可以做到这一点(在A类中):
if (b == null)
但是,看来b永远不会为空。
我该怎么办?
答案是在A中的多对一语句中添加not-found =“ ignore”:
<many-to-one name="b" class="B" not-found="ignore" insert="false" update="false" column="id" unique="true"/>
我尝试按照Rob H的建议,简单地向B添加lazy =“ false”,但是每次加载不带B的A时,都会导致HibernateObjectRetrievalFailureException。
请参阅本主题以获取更多信息:
https://forum.hibernate.org/viewtopic.php?p=2269784&sid=5e1cba6e2698ba4a548288bd2fd3ca4e