2016-12-08 10 views
0

マイコードを取得しますか?JPAは切り離さ結果

それは単純な例ですが、すべてのオブジェクトがneestedオブジェクトの20を持っていることを想像し、それは次のようになります。自身でトランザクション内のクエリを実行し

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

答えて

2

を。トランザクションが終了すると、結果はもはや永続コンテキストにアタッチされません。

簡単な例ですが、別個の取り外しは必要ありません。進行中のトランザクションがある場合はREQUIRES_NEWを必ず使用してください。そうしないと、トランザクションは切断されません。

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

その作業が、より多くのクエリ結果のために:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:成功したサーバーから受信した最後のパケットは、4738464ミリ秒前でした。 – user3871754

+0

これは、SpringやJPAとは無関係の別の問題です。プログラムはサーバーに到達できません。 – Kayaman

関連する問題