Jpa em.flush数据通过sql developer不可见
这可能是一个简单的问题 在我的代码中,我正在执行Jpa em.flush数据通过sql developer不可见,jpa,entitymanager,Jpa,Entitymanager,这可能是一个简单的问题 在我的代码中,我正在执行 user = em.find(User,pk); user.setName("name"); em.flush(); 使用调试器执行此flush()状态集后,我停止使用断点。现在,我使用我的SQLDeveloper工具检查是否在DB中进行了更改。我看不到DB中完成的更改 这对于flush命令意味着什么 刷新生成的sql将被发送到DB,但在DB上它会排队等待commit语句通过?sql语句还没有应用吗 修改1: 所以,也许我第一次不清楚我想做什么
user = em.find(User,pk);
user.setName("name");
em.flush();
使用调试器执行此flush()状态集后,我停止使用断点。现在,我使用我的SQLDeveloper工具检查是否在DB中进行了更改。我看不到DB中完成的更改
这对于flush命令意味着什么
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 {
}
您可能是对的,您的事务尚未提交,因此在保存它们的事务之外,更改不可见。您使用什么启动和停止事务?flush()不提交事务,只写入数据库。要查看另一个会话中的更改,您需要提交事务。了解事务隔离级别您可能希望使用read Uncommitted(),但我建议您不要这样做。我强烈建议您找出一些组织代码的替代方法,这样您就可以部分提交单个工作单元,而无需长时间运行阻塞事务。阅读未承诺可能是一个丑陋的轨道下去,除非你准备好的后果。嗨,请看修改解释我试图实现。谢谢