JPA 刷新与提交

新手上路,请多包涵

在 JPA 中,如果我们调用 EntityTransaction.commit(),它会自动调用 EntityManager.flush() 吗?或者我们应该称他们两个?有什么区别?因为我有 JPA 问题,当我将一个实体插入数据库时,我调用了 persist()。在数据库中,数据已插入(可以获取),但该数据未显示在我的应用程序中(我使用 findAll() 获取它)。在另一个实体上,它出现了。有什么我不知道的吗?我正在使用标准的 Spring CRUD、JPA resource_local 和 postgresql。对不起我的英语,提前谢谢

原文由 monterico 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

如果我们调用 EntityTransaction.commit(),它会自动调用 EntityManager.flush() 吗?

是的

有什么区别?

在 flush() 中,数据的更改在遇到刷新后反映在数据库中,但它仍然在事务中。flush() 必须包含在事务上下文中,除非需要(在极少数情况下),否则不必显式执行), 当 EntityTransaction.commit() 为你做的时候。

资源

原文由 singhakash 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题