许多用户同时使用我的应用程序,每当一个用户对数据库进行更改时,我希望其他用户能够用新数据重新加载其实体列表。我设法通过使用以下代码来做到这一点:
public List<T> listAll() {
clearCache();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<T> cq = cb.createQuery(clazz);
Root<T> root = cq.from(clazz);
CriteriaQuery<T> cquery = cq.select(root);
List<T> lista = em.createQuery(cquery).setHint(QueryHints.CACHE_RETRIEVE_MODE,
CacheRetrieveMode.BYPASS).getResultList();
return lista;
}
public void clearCache(){
em.clear();
}
问题是每次我想要当前数据库状态时,我都需要同时添加clearCache和hint方法。 CacheRetrieveMode.BYPASS是否足够?