CriteriaQuery设置可缓存

时间:2017-10-06 07:36:04

标签: 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 query.getResultList();

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

对于CriteriaQuery,您可以键入将CriteriaQuery对象投射到javax.persistence.Query package的查询中,如下所示:

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

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