有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javajpa获取分离结果

我的代码:

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个neested对象,那么它将如下所示:

for(Users i : users) 
{
       entityManager.detach(i); 
        for(Users y : i.getNeested()) 
        {
             entityManager.detach(y);
             for(Users y : i.getNames()) 
              ....
        }
}

共 (1) 个答案

  1. # 1 楼答案

    在事务中单独执行查询。一旦事务结束,结果将不再附加到持久性上下文

    简单示例,无需单独分离。如果您有正在进行的事务,请确保使用REQUIRES_NEW,否则它们不会被分离

    @Transactional(propagation=Propagation.REQUIRES_NEW)
    @Override
    public List<User> findUsers() {
        return em.createNativeQuery("SELECT * FROM users", User.class).getResultList();
    }