我有实体,它通过jdbcTemplate
更新和创建
transactionTemplate.execute {
myRepository.save(MyEntity(...))
jdbcTemplate.update("UPDATE my_entity ...")
entityManager.flush()
}
myRepository.getById(...) // Old version of entity from hibernate cache
但是当我获取更新后的实体时,我会从缓存中获取未刷新的版本。这里的问题是什么?例如,当我用Modifying
调用原生查询时,一切都很正常。
发布于 2021-07-19 07:36:48
flush()
将更改从EntityManager
写入数据库。因此,您很可能希望在不使用JPA进行更新之前调用它,就像使用JdbcTemplate
一样。
flush()
不会从EntityManager
的缓存中删除您可能感兴趣的实体。对于单个实体,这是由EntityManager.clear()
或EntityManager.detach(Object entity)
完成的
https://stackoverflow.com/questions/68422742
复制相似问题