em.remove(数据)而不是em.remove(em.merge(数据))在什么情况下?

时间:2014-11-27 15:55:39

标签: java-ee jpa ejb

到目前为止,我认为,方法find()让我们感到很舒服,我们只有这一刻可管理的实体。

我知道merge()返回可管理的实体,但为什么在这种情况下需要它呢?

public void delete(int id) throws DatabaseException {
    Project data = em.find(Project.class, id);
    if(data == null) {
        throw new NotExistsException("id");
    }
    em.remove(em.merge(data));
}

1 个答案:

答案 0 :(得分:1)

我猜你错过了交易......

如果您在方法开始时启动事务并在em.remove之后提交它,它应该可以工作。