我的代码:
String sql = SELECT * FROM users;
List<Users> users = entityManager.createNativeQuery(sql, Users.class);
for(Users i : users)
entityManager.detach(i);
如何更换样板循环:
for(Users i : users)
entityManager.detach(i);
?
这是一个简单的示例,但是假设每个对象都有20个所需的对象,那么它将看起来像这样:
for(Users i : users)
{
entityManager.detach(i);
for(Users y : i.getNeested())
{
entityManager.detach(y);
for(Users y : i.getNames())
....
}
}
最佳答案
自己在事务中执行查询。事务结束后,结果将不再附加到持久性上下文中。
简单的例子,不需要单独的分离。如果您正在进行交易,请确保使用REQUIRES_NEW
,否则它们不会分离。
@Transactional(propagation=Propagation.REQUIRES_NEW)
@Override
public List<User> findUsers() {
return em.createNativeQuery("SELECT * FROM users", User.class).getResultList();
}
关于java - JPA脱离结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41040300/