实体管理器刷新
2022-09-01 10:32:28
我有使用JPA的Web应用程序。这个实体管理器保留了一堆entites,突然我从另一边更新数据库。我使用MySQL,我使用PhpMyAdmin并更改一些行。
如何告诉实体经理重新同步,例如忘记缓存中的所有entites?
我知道有方法,但是有没有可能怎么做或什么导致这种情况?refresh(Object)
refreshAll()
可以肯定的是,这是昂贵的操作,但如果必须这样做。
我有使用JPA的Web应用程序。这个实体管理器保留了一堆entites,突然我从另一边更新数据库。我使用MySQL,我使用PhpMyAdmin并更改一些行。
如何告诉实体经理重新同步,例如忘记缓存中的所有entites?
我知道有方法,但是有没有可能怎么做或什么导致这种情况?refresh(Object)
refreshAll()
可以肯定的是,这是昂贵的操作,但如果必须这样做。
entityManager.getEntityManagerFactory().getCache().evictAll()
Refresh
是不同的东西,因为它修改了你的对象。此行将正好 ,因此,如果您获取在实体管理器外部更改的对象,它将执行实际的数据库查询,而不是使用过时的值。empty the cache
cached
我遇到了类似的问题,上面的行对我有用。evictAll()
或者,实体类上的注释也可以工作,其优点是能够控制缓存参数:@Cache
@Cache(coordinationType=CacheCoordinationType.INVALIDATE_CHANGED_OBJECTS)
请参见: http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching