求教,谢绝水贴,有能力来!
现在我在用Hibernate做数据映射时,对于一对多的关系会出现这种情况:
many方可能对应不到one
以Class和Student为例:
可能会出现:有student但没有class的情况,求教,要实现这种配置,我应该怎么在XML中配置?
------解决方案--------------------<many-to-one name="publishers" class="com.bms.ORM.Publishers" fetch="select" lazy="false">
<column name="publisherID" not-null="true" />
</many-to-one>
最主要的是lazy这个属性要设置成false,意思就是直接加载,不延迟
------解决方案--------------------这个很正常嘛
基于注解的
多方:
@ManyToOne
@JoinColumn(name=外键列)
一方:
@OneToMany(mappedby="多方所声明的一方的对象值")
基于xml的不清楚
------解决方案--------------------not-found:指定的外键引用的数据不存在时如何处理。ignore表示会将行数据不存在视为一个空(null)关联。
在many-to-one里加上not-found=“ignore”当没有数据匹配时不会抛异常
------解决方案--------------------两个对象之间有对应关系的,例如A对B是 一对多 的关系,那么你在保存B的信息的时候可以尝试B.setA(null);
就是把A对象设置一个空对象,应该是可以的。
------解决方案--------------------在one那端在配个one-to-many
------解决方案--------------------多对一:
<many-to-one name="classes" class="vo.CLASSES" column="STUID" insert="false" update="false" not-found="ignore"></many-to-one>
一对多:
<set name="students" inverse="true">
<key>
<column name="stu_id" precision="22" scale="0" />
</key>
<one-to-many class="vo.STUDENT" />
</set>
应该是这么配的吧,好久没弄了、、、
------解决方案--------------------
这就不就是单向配置吗??
------解决方案--------------------
。。帮顶!