为什么我们要在jpa / hibernate中删除之前合并实体

时间:2016-12-31 10:14:29

标签: hibernate jpa

为什么我们要在删除之前合并实体? 哪些有效?

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);
}

1 个答案:

答案 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