我的项目是Spring-boot + Spring-data-jpa + hibernate + ehcache。 二级缓存使用以下内容:
2a上。它与我的HQL查询一起使用query.setHimt(“org.hibernate.cacheable”,true);
如果
,则不起作用2B。如果我使用规范和标准来查询而不是HQL
我和2a和2b的设置相同。假设我的实体类是City。我使用这样的规范:
CriteriaBuilder build = em.getCriteriaBuilder();
CriteriaQuery<City> query = build.createQuery(City.class);
Root<city> root = query.from(City.class);
query.where(spec.toPredicate(root,query,build));
TypedQuery<City> tq = em.createQuery(query);
tq.setHint("org.hibernate.cacheable", true);
return tq.getResultList();
结果集正确,与HQL相同的对象列表。但是如果我在循环中调用此方法,它每次都会从数据库中检索。
我不明白,HQL和规范都会生成TypedQuery&lt;&gt;。 我可以使用Hibernate和ehcache缓存规范查询吗?