データベースからエンティティのリストを削除したい。
List<LetterEntity> letterToDel
- エンティティのリスト。私はさまざまな方法でこのリストを削除しようとしました。
- 1 つのトランザクションを作成し、ループ内の各エンティティを削除します
EntityTransaction trx = em.getTransaction();
try {
for (LetterEntity l : lettersToDel) {
trx.begin();
em.remove(l);
em.flush();
trx.commit();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (trx.isActive())
trx.rollback();
}
- ループで削除するたびに新しいトランザクションを作成します
try {
for (LetterEntity l : lettersToDel) {
EntityTransaction trx = em.getTransaction();
trx.begin();
em.remove(l);
em.flush();
trx.commit();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (trx.isActive())
trx.rollback();
}
ケース 1、2 では例外はありませんが、エンティティは削除されません。
- クエリでエンティティを削除しようとしました
try {
for (LetterEntity l : lettersToDel) {
em.createQuery("delete from LetterEntity l where l = :letter")
.setParameter("letter", l)
.executeUpdate();
}
} catch (Exception e) {
e.printStackTrace();
}
ケース 3 には例外があります。
javax.persistence.TransactionRequiredException: Executing an update/delete query
私が間違っていることは何ですか?