Hibernate 可缓存的标准查询集

Hibernate 可缓存的标准查询集,hibernate,criteriaquery,Hibernate,Criteriaquery,我知道我们可以使用query.setHint(“org.hibernate.cacheable”,true)为查询设置hibernate缓存,如下例所示。然而,有人知道用CriteriaQuery而不是Query来实现这一点吗 Query query = entityManager.createQuery("from " + Employee.class.getName()); query.setHint("org.hibernate.cacheable", true); return quer

我知道我们可以使用query.setHint(“org.hibernate.cacheable”,true)为查询设置hibernate缓存,如下例所示。然而,有人知道用CriteriaQuery而不是Query来实现这一点吗

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

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

。。。
c、 选择(根)。其中(p);
Query regularQuery=this.currentSession().createQuery(c);
setHint(“org.hibernate.cacheable”,true);
返回regularQuery.getResultList();

对于
CriteriaQuery
您可以键入要从
javax.persistence.Query包查询的
CriteriaQuery
对象,如下所示:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
javax.persistence.criteria.CriteriaQuery query = cb.createQuery();

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

((Query)query).setHint("org.hibernate.cacheable", true);