带有Hibernate JPA的Spring - EntityManager是关闭异常

RaR*_*RaR 0 java spring hibernate jpa spring-boot

EntityManagerFactory(injected)每次需要访问db 时都用来创建entityManager.我有以下代码抛出,

org.springframework.dao.InvalidDataAccessApiUsageException: EntityManager is closed

entityManager = entityManagerFactory.createEntityManager();

List<Object> list = entityManager.createQuery("FROM Class").getResultList();

entityManager.close();

return list.toArray(new Object[list.size()]);
Run Code Online (Sandbox Code Playgroud)

我正在创建一个EntityManager,查询db以获得一些结果,关闭EntityManager并将结果返回给想要这些结果的人.我想我可以弄清楚什么是错的.getResultList()管理的返回对象.因此,在关闭EntityManager导致错误之后尝试访问它们(好吧,我想......).entityManager.clear()关闭之前我试过了.我得到了同样的错误.我尝试entityManager.detach(obj)在关闭它之前从列表()中分离每个对象.不过,我得到了同样的错误.我尝试使用@Transactional(readOnly=true)该方法进行注释.没用

我不会修改对象.我只需要它们在UI上显示.你能给我一个解决方案吗?我正在使用Spring启动+ hibernate JPA + AngularJS + Postgresql.

(PS:我不能让entityManager打开.把它打开,我的连接限制超出了错误.这也不是最好的方法)

fra*_*sti 5

为什么不注入实体经理而不是工厂?这样你就可以将创建和处理委托给框架,gettind也可以摆脱连接限制错误(因为框架会为你处理所有这些).

你应该能够这样注入它:

@PersistenceContext
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)

然后你可以使用它.