问题描述
domai:GouSite和GouSitePro其中GouSitePro表中有外键site_id对应GouSite的ID,唯一。GouSite中:private GouSitePro gouSitePro ;GouSite.hbm.xml中: <many-to-one name="gouSitePro" class="com.g.admin.hbm.GouSitePro" cascade="all" update="false" column="id" unique="true" not-null="false" lazy="false"/>GouSitePro中:private GouSite gouSite;GouSitePro.hbm.xml中: <many-to-one name="gouSite" column="Site_id" class="com.g.admin.hbm.GouSite" unique="true"/>现在保存GouSite无法保存GouSitePro,因为GouSitePro中有gouSite属性,因此要保存gouSite之后才能保存GouSitePro。调试中发现saveorupdate(GouSite)的时候首先是保存GouSitePro对象。因此无法保存成功,但是修改没有问题。因为GouSitePro不为空。现在要新增,怎样才能在保存GouSite之前先保存GouSite再保存GouSitePro呢? 问题补充:woaiwofengkuang 写道
解决方案
hbm文件有问题吧,怎么两方全是mang-to-one。在GouSite中应该是<set><one-to-many/></set>这种形式。如果是<many-to-one>会认为GouSite是个子,在保存子时没有父,肯定保存不成功。
解决方案二:
先搞明白你这两个类是那个类型的关联。再说吧。
解决方案三:
这是外建没有的原因。又向关联一定要指定一方为主。
解决方案四:
如果是一对一的话,不基于中间表的在另一端要用one-to-one,基于中间表的一定要在一端指定inverse="true"。