与JPA事务管理器的CLOSED连接问题

时间:2012-04-10 14:42:55

标签: hibernate jpa

我一直遇到JPA关闭连接问题。我使用Spring 3.0.5与hibernate 3.0。我正在使用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()方法都会在事务中执行,因为需要传播。但是,对于第二个find(),它会抛出异常,而且会间歇性地抛出异常。有时它表示CLOSED连接,有时它表示“交易不活跃”,奇怪的是其他时候它确实按预期工作!让我抓狂......

帮助表示感谢!

1 个答案:

答案 0 :(得分:0)

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