我的代码:
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())
....
}
}
答案 0 :(得分:2)
单独在事务中执行查询。一旦交易结束,结果将不再附加到持久性上下文。
简单的例子,不需要单独拆卸。如果您正在进行交易,请务必使用REQUIRES_NEW
,否则他们不会被分离。
@Transactional(propagation=Propagation.REQUIRES_NEW)
@Override
public List<User> findUsers() {
return em.createNativeQuery("SELECT * FROM users", User.class).getResultList();
}