为什么我们要在删除之前合并实体? 哪些有效?
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.getReference
代替EntityManager.find
。