SSH架构中Illegal attempt to associate a collection with two open sessions 问题

在SSH架构中遇到 Illegal attempt to associate a collection with two open sessions 错误,该错误源于多对多关系保存操作。通过调整web.xml中OpenSessionInViewFilter的singleSession配置为true,确保在整个请求过程中使用同一个Hibernate session,解决了懒加载数据时的问题。Open Session in View模式在singleSession=true时,允许在请求的任何时刻进行lazy loading,而singleSession=false则会导致每个数据访问新建session,失去Open Session in View的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多对多关系表的save保存动作

hbm配置:

BEAN保存部分代码:

web.xml 中Session配置部分

使用以上配置保存一个BsdUser对象时报错:

Illegal attempt to associate a collection with two open sessions

 

解决上面的问题,只需修改web.xml中OpenSession的属性配置

 

说明一下Open Session in View的作用,

如果是singleSession=true的话, 就是允许在每次的整个request的过程中使用同一个hibernate session,可以在这个request任何时期lazy loading数据。
如果是singleSession=false的话,就不会在每次的整个request的过程中使用同一个hibernate session,而是每个数据访问都会产生各自的seesion,等于没有Open Session in View。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值