EclipseLink:忽略缓存并直接从数据库获取数据

时间:2018-10-18 12:33:25

标签: java jpa eclipselink

许多用户同时使用我的应用程序,每当一个用户对数据库进行更改时,我希望其他用户能够用新数据重新加载其实体列表。我设法通过使用以下代码来做到这一点:

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是否足够?

0 个答案:

没有答案