Die Spezifikation Schnittstelle hat eine toPredicate Methode, die Sie Ihren Code
public interface Specification<T> {
/**
* Creates a WHERE clause for a query of the referenced entity in form of a {@link Predicate} for the given
* {@link Root} and {@link CriteriaQuery}.
*
* @param root
* @param query
* @return a {@link Predicate}, must not be {@literal null}.
*/
Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb);
}
dann wie folgt aussehen (nicht getestet) verwenden können:
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<String> query = builder.createQuery(String.class);
Root<DomainObject> domainRoot = query.from(Customer.class);
Predicate predicate = DomainSpec.like('xyz').toPredicate(domainRoot , query, builder);
query = query.where(predicate);
von 'Criteria' meine ich die alten org .hibernate.Criteria, kein CriteriaBuilder – zibi