java – mysql视图在事务内部没有刷新(Hibernate / Spring)
作者:互联网
我使用Spring for DI和Hibernate在mySQL数据库上进行数据访问.我在一个事务中有代码,该事务在表中插入记录,然后执行查询该表并执行一些聚合计算的视图.我看到的问题是我刚刚在同一个事务中插入的记录未包含在视图的计算值中.我在mySQL工作台中运行相同的视图,插入的值包含在视图中.有谁知道是什么原因造成的?
解决方法:
最终,我不得不调用entityManager.refresh(Object entity)来刷新我想要更新的视图记录的实体.我认为问题在于Hibernate无法识别视图需要更新的事实,因为它不知道它是否依赖于(在数据库级别)更新的原始实体.我认为Hibernate正在从视图中缓存记录,并且即使在flush()之后也不知道它们需要更新.
Hibernate认为原始表和视图完全不相关,而实际上视图依赖于表,并且应该在表更改时变为“脏”.我不知道如何让Hibernate认识到这一点.
标签:java,spring,mysql,hibernate,sql-view 来源: https://codeday.me/bug/20190726/1539627.html