这是一个简单的问题可能是
在我的代码中,我正在做
user = em.find(User,pk);
user.setName("name");
em.flush();
在使用调试器的这个 flush() statemenet 之后,我停止使用断点。我现在使用我的 sql 开发人员工具检查是否在 DB 中进行了更改。我没有看到数据库中完成的更改。
这对刷新命令意味着什么。
- 刷新生成的 sql 将被发送到数据库,但然后在数据库上排队等待提交语句通过?sql语句还没有应用?
修改1: 所以我第一次可能不清楚我要做什么
我有一个集群设置,在节点 1 上:在事务 1 中,我正在更改一些参数,比如用户实体的名称并在它们上执行 flush(),以便访问数据库。我还不能进行提交,因为事务中需要执行许多其他操作
与事务 1 中的此 On Node(Machine) 2 并行,我正在获取用户实体。现在在这个事务中,唯一的愿望是检查用户的最新姓名。这是并行发生的事情,也是我需要做的事情。有人可以让我知道如何做到这一点,以便分布式节点看到最新的变化。
Node 1 Node 2
try{ try {
em.getTransaction.begin em.getTransaction.begin
user = em.find(User,pk);
System.out.println.(user.getName())
/* this prints JERRY*/
user.setName("TOM");
em.flush();
...
... user = em.find(User,pk);
System.out.println.(user.getName())
/*This should print TOM*/
...
em.commit() //no commit in this transaction
} catch (Exception e) { } finally {
//rollback }
} finally {
}