Java JPA EntityManager不删除实体
我想从数据库中删除实体列表。Java JPA EntityManager不删除实体,java,jpa,entities,Java,Jpa,Entities,我想从数据库中删除实体列表。 列表letterToDel-实体列表。我试着用很多方法删除这个列表 我创建一个事务并删除循环中的每个实体 我为循环中的每个删除创建新事务 在案例1,2中没有例外,但实体没有删除 我尝试使用查询删除实体 在案例3中,有一个例外: javax.persistence.TransactionRequiredException: Executing an update/delete query 我做错了什么?代码应该在执行查询之前创建一个事务 try { Ent
列表letterToDel
-实体列表。我试着用很多方法删除这个列表
javax.persistence.TransactionRequiredException: Executing an update/delete query
我做错了什么?代码应该在执行查询之前创建一个事务
try {
EntityTransaction trx = em.getTransaction();
trx.begin();
for (LetterEntity l : lettersToDel) {
em.createQuery("delete from LetterEntity l where l = :letter")
.setParameter("letter", l)
.executeUpdate();
trx.commit();
}
} catch (Exception e) {
e.printStackTrace();
}
对于案例3,这是正常的。您需要一个事务来执行更新。(如果使用Spring,只需将@Transactional注释添加到方法中即可)
对于1和2,是否使用trx.rollback();在你的最后陈述中?不,它不会进入最后阶段,我不知道为什么。下面的解决方案是可行的,但是为什么使用EntityManager进行删除不可行呢?@MaryRyllo很高兴我能帮上忙。
try {
for (LetterEntity l : lettersToDel) {
em.createQuery("delete from LetterEntity l where l = :letter")
.setParameter("letter", l)
.executeUpdate();
}
} catch (Exception e) {
e.printStackTrace();
}
javax.persistence.TransactionRequiredException: Executing an update/delete query
try {
EntityTransaction trx = em.getTransaction();
trx.begin();
for (LetterEntity l : lettersToDel) {
em.createQuery("delete from LetterEntity l where l = :letter")
.setParameter("letter", l)
.executeUpdate();
trx.commit();
}
} catch (Exception e) {
e.printStackTrace();
}