【问题标题】:CriteriaQuery set cacheableCriteriaQuery 设置可缓存
【发布时间】:2017-10-06 07:36:04
【问题描述】:

我知道我们可以使用 query.setHint("org.hibernate.cacheable", true) 为查询设置休眠缓存,如下例所示。但是,有谁知道 CriteriaQuery 而不是 Query 的任何方法?

Query query = entityManager.createQuery("from " + Employee.class.getName());
query.setHint("org.hibernate.cacheable", true);
return query.getResultList();

【问题讨论】:

    标签: hibernate criteriaquery


    【解决方案1】:

    如果您有 CriteriaQuery,您可以轻松地将其转换为“常规”查询。

    ...
    c.select(root).where(p);
    Query<MyEntity> regularQuery = this.currentSession().createQuery(c);
    regularQuery.setHint("org.hibernate.cacheable", true);
    return regularQuery.getResultList();
    

    【讨论】:

      【解决方案2】:

      对于CriteriaQuery,您可以将CriteriaQuery 对象类型转换为从javax.persistence.Query package 查询,如下所示:

      CriteriaBuilder cb = entityManager.getCriteriaBuilder();
      javax.persistence.criteria.CriteriaQuery query = cb.createQuery();
      
      ((Query)query).setHint("org.hibernate.cacheable", true);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        • 2012-08-19
        相关资源
        最近更新 更多