1

我一直遇到 JPA 封闭连接问题。我正在使用带有休眠 3.0 的 spring 3.0.5。我正在使用 JPA 事务管理器来管理我的服务并使用 REQUIRED 传播。

这是我的场景。

Table A
id    
desc (LAZY)

Table B
a_id

a_id in Table B refers to id of Table A.

我想在给定实体 B 的情况下加载实体 A。

Here is what I am doing (roughly) inside the controller:
List<B> list = serviceB.find() ;

for each element - itemB in above list : itemA = serviceA.find(itemB.a_id);
convert itemA to UI bean and set it in model.

我假设我的服务中的每个 find() 方法都将通过 REQUIRED 传播在事务中执行。但是,对于第二个 find() 它会抛出异常,而且是断断续续的。有时它说 CLOSED 连接,有时它说“事务未激活”,奇怪的是在其他时候它确实按预期工作!快把我逼疯了..

帮助表示赞赏!

4

1 回答 1

0

问题在于多个线程访问相同的服务方法。当我更改我的 UI 页面以进行串行访问而不是并行访问(使用 ajax)时,这不会发生。必须使实体管理器与多线程场景一起工作。

于 2012-06-20T13:20:39.383 回答