NutzCN Logo
问答 dao.clearLinks(..),这是个坑吗?
发布于 785天前 作者 明天会吹什么风 535 次浏览 复制 上一个帖子 下一个帖子
标签: dao

多对多关联,我想删除关联关系!
比如UserRole
the code:

User user = dao.fetch(User.class,userId);
user.setRoles(roles);

dao.clearLinks(user,"roles");

猜猜发生了什么,sql为: delete from users where user_id=? 奇了怪了,竟然是清除,注意是清除了这个user的所有关系,天啦,我只想清楚user.setRoles(roles)的这部分啊!

是不是这个方法就是清楚对象所有关联关系吗?

8 回复

javadoc里面有写

It will delete @One @Many entity records
clear the @ManyMany relations

但sql真的是这句?

delete from users where user_id=?

删users表的记录? 不会吧

这里写错了 delete from user_role where user_id=?

所以javadoc没写错嘛

哦, 不对, 应该清楚关联表
是不是@ManyMany写错了?

根据正则表达式,清除对象的关联。

对于 '@One' 和 '@Many',对应的记录将会删除
而 '@ManyMay' 对应的字段,只会清除关联表中的记录

哦, 你的意思是想只删除特定的@Many数据?

嗯 !
约定要么一样要么就换个方法名。

确实有点儿坑,给人的感觉sql的条件应该是userid=? and roleid in (),结果不是。

添加回复
请先登陆
回到顶部