hibernate一对多级联删除和懒加载的问题
设用户表与文章表为一对多关系User表设置如下:<setname="info"inverse="false"lazy="true"cascade="all"><keyco...
设用户表与文章表为一对多关系
User表设置如下:
<set name="info" inverse="false" lazy="true" cascade="all">
<key column="useractivityid"></key>
<one-to-many class="InfoActivity" />
</set>
文章表如下:
<many-to-one name="User" class="User" column="useractivityid" lazy="false" cascade="save-update"></many-to-one>
这样的设置我在执行删除用户的时候他发布的文章也可以删除,删除文章中的一个对其他的也没影响,但我想通过一个用户来获取用户发布的所有文章则会提示类似要懒加载开着的提示。
尝试了另外一种方法
User表,lazy="true" cascade="all"
文章表:lazy="false" cascade="delete"
这样我可以通过一个用户获取他发布的文章,但是进行删除时删除文章表中的一个文章,那个用户发布的所有文章和用户本身也被删除了。这是怎么回事?我的需求是删除文章中的一个用户和其他活动不受影响,删除用户则把他发布的文章全部删除
我的删除语句如下:
Integer id = Integer.parseInt(request.getParameter("id"));
Userdao dao = new Userdao();
dao.del(id);
通过用户获取发布的文章语句如下:
Userdao userdao = new Userdao();
List<User> userlist = userdao.getAll(usertext); //搜索符合条件用户
List<InfoActivity> resultuser = new ArrayList<InfoActivity>();
//把用户遍历,分别获取他们发布的文章,增加到resultuser集合里
for(User user:userlist){确定
Set<InfoActivity> infoset = user.getInfo();
for(InfoActivity info:infoset){
resultuser.add(info);
}
} 展开
User表设置如下:
<set name="info" inverse="false" lazy="true" cascade="all">
<key column="useractivityid"></key>
<one-to-many class="InfoActivity" />
</set>
文章表如下:
<many-to-one name="User" class="User" column="useractivityid" lazy="false" cascade="save-update"></many-to-one>
这样的设置我在执行删除用户的时候他发布的文章也可以删除,删除文章中的一个对其他的也没影响,但我想通过一个用户来获取用户发布的所有文章则会提示类似要懒加载开着的提示。
尝试了另外一种方法
User表,lazy="true" cascade="all"
文章表:lazy="false" cascade="delete"
这样我可以通过一个用户获取他发布的文章,但是进行删除时删除文章表中的一个文章,那个用户发布的所有文章和用户本身也被删除了。这是怎么回事?我的需求是删除文章中的一个用户和其他活动不受影响,删除用户则把他发布的文章全部删除
我的删除语句如下:
Integer id = Integer.parseInt(request.getParameter("id"));
Userdao dao = new Userdao();
dao.del(id);
通过用户获取发布的文章语句如下:
Userdao userdao = new Userdao();
List<User> userlist = userdao.getAll(usertext); //搜索符合条件用户
List<InfoActivity> resultuser = new ArrayList<InfoActivity>();
//把用户遍历,分别获取他们发布的文章,增加到resultuser集合里
for(User user:userlist){确定
Set<InfoActivity> infoset = user.getInfo();
for(InfoActivity info:infoset){
resultuser.add(info);
}
} 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
2个回答
展开全部
save-update的意思是使用save()、update()、saveOrUpdate()的时候做级联,all的意思是在save-update基础上加上delete()。在article.hbm.xml中加上inverse设为true,表示它们之间的关系由user来维护。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询