No exemplo setamos passamos o Hint para usar cache nas queries pelo typedQuery. typedQuery.setHint("org.hibernate.cacheable", "true");
Mas haveria uma opção usando o session.createCriteria?
No exemplo setamos passamos o Hint para usar cache nas queries pelo typedQuery. typedQuery.setHint("org.hibernate.cacheable", "true");
Mas haveria uma opção usando o session.createCriteria?
Acho que consegui com o setCacheable(true);
=)
public List<Produto> getProdutos(String nome, Integer categoriaId, Integer lojaId) {
Session session = em.unwrap(Session.class);
Criteria criteria = session.createCriteria(Produto.class);
if (!nome.isEmpty()) {//setCacheable = para usarmos o cache 2o nivel:
criteria.add(Restrictions.like("nome", "%" + nome + "%")).setCacheable(true);
}
if (lojaId != null) {
criteria.add(Restrictions.like("loja.id", lojaId)).setCacheable(true);
}
if (categoriaId != null) {
criteria.setFetchMode("categorias", FetchMode.JOIN)
.createAlias("categorias", "c")
.add(Restrictions.like("c.id", categoriaId)).setCacheable(true);
}
return (List<Produto>) criteria.list();
}
Boa Aline :D