hibernate多对多关联如何如何删除中间表的关系,而不删除两张表中的数据

z11305250336 2017-05-08 09:28:11
hibernate如何做到仅仅删除中间表的数据?
	public String stuDropKc(){  
String kch=kc.getKch();
Kcb kc=kcService.getOneKc(kch);
ActionContext ctx=ActionContext.getContext();
Map session=ctx.getSession();
String xh=((Dlb)session.get("user")).getUsr();
Xsb xs=xsService.getOneXs(xh);
//xsService.dropKc(xh,kch);
Set kcs=xs.getKcs();
kcs.remove(kc);
xs.setKcs(kcs);
xsService.update(xs);
return SUCCESS;
}


这是我的代码,但是无法做到删除中间表的数据。

另外, 如果是一对多的关系呢,仅仅解除关系,让外键为空,如何做到?


请教各位,谢谢!
...全文
652 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kane0409 2017-09-19
  • 打赏
  • 举报
回复
多对一的一方设置成懒加载,然后在类上加@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"}) ,这样就不影响序列化以及删除的情况了,主要还是控制方的问题,你试试我的方法,不行再继续弄
z11305250336 2017-05-12
  • 打赏
  • 举报
回复
引用 7 楼 pany1209 的回复:
[quote=引用 6 楼 z11305250336的回复:][quote=引用 5 楼 pany1209 的回复:] [quote=引用 4 楼 z11305250336 的回复:] [quote=引用 3 楼 pany1209 的回复:] 一方.set一方(null);中间表的数据就没了。。。
我只是想做退课的功能,删除数据库中间表中特定的一条数据 应该怎么实现呢?[/quote] 先把一方从一方的集合中remove掉,再update一方就可以删除指定的一条数据。。。。[/quote] 我就是这样做的,但是没用 既不会出错,也不会删除 remove之后调用update并不会删除那条记录 我刚才直接写了sql语句删除了关系表中的数据,是可以做到的[/quote] 我试过可以啊。。。。。。[/quote] 可我是这样做的,没效果。。
李德胜1995 2017-05-08
  • 打赏
  • 举报
回复
引用 6 楼 z11305250336的回复:
[quote=引用 5 楼 pany1209 的回复:] [quote=引用 4 楼 z11305250336 的回复:] [quote=引用 3 楼 pany1209 的回复:] 一方.set一方(null);中间表的数据就没了。。。
我只是想做退课的功能,删除数据库中间表中特定的一条数据 应该怎么实现呢?[/quote] 先把一方从一方的集合中remove掉,再update一方就可以删除指定的一条数据。。。。[/quote] 我就是这样做的,但是没用 既不会出错,也不会删除 remove之后调用update并不会删除那条记录 我刚才直接写了sql语句删除了关系表中的数据,是可以做到的[/quote] 我试过可以啊。。。。。。
z11305250336 2017-05-08
  • 打赏
  • 举报
回复
引用 5 楼 pany1209 的回复:
[quote=引用 4 楼 z11305250336 的回复:] [quote=引用 3 楼 pany1209 的回复:] 一方.set一方(null);中间表的数据就没了。。。
我只是想做退课的功能,删除数据库中间表中特定的一条数据 应该怎么实现呢?[/quote] 先把一方从一方的集合中remove掉,再update一方就可以删除指定的一条数据。。。。[/quote] 我就是这样做的,但是没用 既不会出错,也不会删除 remove之后调用update并不会删除那条记录 我刚才直接写了sql语句删除了关系表中的数据,是可以做到的
李德胜1995 2017-05-08
  • 打赏
  • 举报
回复
引用 4 楼 z11305250336 的回复:
[quote=引用 3 楼 pany1209 的回复:] 一方.set一方(null);中间表的数据就没了。。。
我只是想做退课的功能,删除数据库中间表中特定的一条数据 应该怎么实现呢?[/quote] 先把一方从一方的集合中remove掉,再update一方就可以删除指定的一条数据。。。。
z11305250336 2017-05-08
  • 打赏
  • 举报
回复
引用 3 楼 pany1209 的回复:
一方.set一方(null);中间表的数据就没了。。。
我只是想做退课的功能,删除数据库中间表中特定的一条数据 应该怎么实现呢?
李德胜1995 2017-05-08
  • 打赏
  • 举报
回复
一方.set一方(null);中间表的数据就没了。。。
z11305250336 2017-05-08
  • 打赏
  • 举报
回复
大召唤之术!
z11305250336 2017-05-08
  • 打赏
  • 举报
回复
求指点迷津!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧