3

我知道我们将能够使用 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();
4

2 回答 2

2

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

...
c.select(root).where(p);
Query<MyEntity> regularQuery = this.currentSession().createQuery(c);
regularQuery.setHint("org.hibernate.cacheable", true);
return regularQuery.getResultList();
于 2018-11-16T15:02:52.930 回答
0

因为CriteriaQuery您可以将您的CriteriaQuery对象类型转换为 Query from javax.persistence.Query packageLike 下面:

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

((Query)query).setHint("org.hibernate.cacheable", true);
于 2019-09-12T08:57:48.710 回答