hibernate many-to-one left join fetch 对应的many表数据在one表不存在

hibernatemany-to-oneleftjoinfetch对应的many表数据在one表不存在。比如,A表引用B表,但是A表中的引用在B表中不存在,hiberna... hibernate many-to-one left join fetch 对应的many表数据在one表不存在。
比如,A表引用B表,但是A表中的引用在B表中不存在,hibernate配置文件中A-B是MANY-TO-ONE关系,这样会多生成几条sql。数目正好是A表中存在的B表中已删除的数据数目。请问该如何解决?
展开
 我来答
百度网友7a51199
2014-02-27
知道答主
回答量:18
采纳率:0%
帮助的人:15.8万
展开全部
class A{
private Long id;

private B b;

}
class B{
private Long id;

...

}
<class name="A">
<id...>

<property...>

<many-to-one class="B" column="B_ID" name="b">

</class>
<class name="B">
<id...property...>
</class>
保存时,先保存one 方,再保存many方。假如先保存many方再保存one方,就会有额外的upodate
sql ,因为后保存one方,many方对应的one方的属性的状态发生变化,他会发额外的update A
set B_ID = ? 来维护自己的属性。

假如是单向的one2many
class A{
private Long id;
..
}
class B{
private Set<A> as;

}

<class name="A">
<id ...>

</class>
<class name="B">
<set name="as">

<kye column="A_ID"/>

<one-to-many class="A" >

</set>
</class>

双向的one2many 需要在one 方的集合属性上加上insvere=true 放弃对关系的维护,从而提性能
<set name="as" insverse="true">

<kye column="A_ID"/>

<one-to-many class="A" >

</set>
追问

字数限制,上图了。提交追问

追答
能把你的配置 xxx.hbml.xml 配置  和 domain类
给我看看吗,
在 主表的 对象的hbml 配置 中加入 cascade="all-delete-orphan", 不清楚你可以去百度 查查cascade 的使用方法。也可以通过 在 主对象的dao 的delete方法中,删除该学生记录的 同时,查出该学生ID 对应的成绩记录,打破他们这件的关系 并删除。这不难吧。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式