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打开.把它打开,我的连接限制超出了错误.这也不是最好的方法)
为什么不注入实体经理而不是工厂?这样你就可以将创建和处理委托给框架,gettind也可以摆脱连接限制错误(因为框架会为你处理所有这些).
你应该能够这样注入它:
@PersistenceContext
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)
然后你可以使用它.
| 归档时间: |
|
| 查看次数: |
5449 次 |
| 最近记录: |