Return Stream based result from Query
public List<Post> findByKeyword(String keyword) {
CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
CriteriaQuery<Post> q = cb.createQuery(Post.class);
Root<Post> c = q.from(Post.class);
List<Predicate> predicates = new ArrayList<>();
if (null != keyword && "".equals(keyword.trim())) {
predicates.add(
cb.or(
cb.like(c.get(Post_.title), '%' + keyword + '%'),
cb.like(c.get(Post_.content), '%' + keyword + '%')
)
);
}
q.where(predicates.toArray(new Predicate[predicates.size()]));
TypedQuery query = this.entityManager.createQuery(q);
return query.getResultList();
}Last updated