我们正在尝试从Spring3/Hibernate3升级到Spring4/Hibenate4。我们看到的其中一个问题是,在Hibernate3中,当实体从服务层以服务方法周围的事务边界获取时,实体没有用于延迟加载属性的活动打开会话。事务管理器用于调用SpringSessionSynchronization的afterCompletion来取消所有会话。如何关闭事务边界后的休眠会话
现在使用spring4 + hibernate4组合,我们看到实体回来时会在其上启动活动的打开会话。事务管理器现在调用SpringFlushSynchronization而不是SpringSessionSynchronization,它在执行提交后不会执行任何操作。那么现在情况是,当与旧的会话实体被传递到另一个服务电话与一个单独的事务边界,它是由错误满足:
Illegal attempt to associate a collection with two open sessions
注意,事务管理器在我的情况下,使用JTA如果这是相关的。 Spring现在的工作方式有什么变化,正在产生这种行为上的变化 - 是否有解决问题的补救措施?
您使用哪个版本的bitronix? bitronix/sprng/hibernate4/5有问题吗? – rdm 2016-04-26 20:35:25