2016-12-31 15 views
0

エンティティを削除する前にマージする必要があるのはなぜですか?
これらのうちどれですか?jpa/hibernateで削除する前にエンティティをマージする理由

public void removeStudent(int i){ 
    Student studentD = entityManager.find(Student.class, i); 
    tx.begin(); 
    entityManager.remove(studentD); 
    tx.commit(); 
} 

public void removeStudent(Student student){ 
    Student studentD = entityManager.merge(student); 
    entityManager.remove(studentD); 
} 
+0

あなたは削除する前になぜマージしますか?削除する必要があるのは「管理対象」オブジェクトなので、削除する前にいくつかの変更をマージするのは無意味です...全く無意味です –

答えて

0
public void removeStudent(int i){ 
    Student studentD = entityManager.find(Student.class, i); 
    tx.begin(); 
    entityManager.remove(studentD); 
    tx.commit(); 
} 

このコードでは、すべてのトランザクションを使用しての目的に反し、これまではそれを使用しないありません。 EntityManager.findへの呼び出しは、存在しないエンティティを削除しようとしないように、トランザクションスコープ内にある必要があります。

エンティティへの参照を削除する唯一の目的でエンティティへの参照が必要な場合は、EntityManager.findの代わりにEntityManager.getReferenceを使用してください。

関連する問題