我有一个用于更新表的jdbc update查询。并且在hibernate中为同一个表维护实体缓存。我需要告诉hibernate刷新由jdbc查询更新的实体的缓存区域。
发布于 2017-01-05 09:12:20
你要找的是
sessionFactory.getCache().evictEntityRegion(MyEntity.class)
这将从缓存中删除过时的条目。但是,如果您在JDBC更新之前执行此操作,则在此无效和JDBC更新之间窗口中,可以通过并发读取再次填充缓存,因此如果您的应用程序没有停止所有数据库访问,您可能会得到一些过时的条目。
更新后的另一个区域逐出可以解决这个问题,但是在JDBC查询和区域逐出之间,缓存中的数据很容易再次不一致。
https://stackoverflow.com/questions/41460590
复制