collection was not processed by flush()

之前在项目中碰到这样的一个问题,网上查了很多资料,也和很多朋友一起讨论过,但都没有很好的解决那问题。最后只能通过将方法分离出来才把问题解决。

方法一:百度,csdn,以及国外的一些帖子都说将hibernate升级到3.2.6版本就好了。我用的hibernate版本是3.2.7的,我想既然在3.2.6中已经得到解决的问题在3.2.7版本中应该不会再存在了,哈哈哈、、、所以这方法我就没试了。

方法二:还有一个朋友告诉我要在web.xml中配置下面代码,将SessionBean的生命周期扩大到页面。

	<filter>
		<filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
		<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
这方法我试了,结果当然还是不行,在我这不行,不知道别的朋友用这方法能行不。


还看到相关资料说是hibernate里面的BUG,要说是hibernate里面的BUG的话那只能将版本升级,或者就是什么也做不了。

最后我发现,当我对数据进行修改操作的时候事务总是不能提交。因为hibernate的缓存机制,虽然我对数据进行了修改操作,但是修改后的数据只是存在hibernate缓存之中并没有真正的commit。想到这点之后我再返回去看我的程序,我发现程序里面执行update操作的方法(比如就叫方法一)里面调用的那个方法也执行了update(方法二)操作,但是却没有commit。方法二进行update之后数据存在hibernate缓存之中,但是没有commit。

形象一点说就是执行了:update   update     --     commit   这样的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值