JPA EntityManager 不工作

JPA EntityManager Not working

我知道这个问题已经发布了好几个帖子,但我正面临这个问题,其他帖子的解决方案都没有用。我要疯了。 这是简单的代码:

@Override
public void delete(Module module) {
    System.out.println(this.findById(module.getId()));
    em.remove(em.contains(module) ?  module : em.merge(module));
    System.out.println(this.findById(module.getId()));
}

这是控制台的输出:

com.btoc.flowrepository.domain.Module@746d23
null

但是当我在底部看时,线仍然在那里。知道为什么吗?以及如何解决?

PS : 我正在使用共享 EM,所以我无法在其上创建事务来传递删除请求...

提前致谢。

ORM 技术在两阶段交易中运行:

  1. 在您调用 commit 之前,它们会读写内存缓冲区
  2. 调用 commit 后,对缓冲区所做的更改将对实际数据库进行更改

您看到的是对缓冲区所做的更改,即当您在删除对象后尝试查找该对象时,您只会得到 null,但是由于您还没有调用提交,这些更改不会反映在数据库中.

解决方案显然是使操作具有事务性并调用提交。如果您认为这应该是一个单独的操作,而不是一组操作的一部分,那么您应该考虑重构您的代码。没有看到你所做的更多,我真的不能提供更多的建议抱歉!