Hibernate Criteria API

Eine Datenbank schön zu befragen geht zum Beispiel mit der Hibernate Criteria API unter Benutzung der Factory-Klasse Restrictions. So lässt sich beispielsweise die Anfrage für eine etwas umfangreichere Such- und Filterfunktion so zusammenbasteln:

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
 
[...]
 
List< Kunde > gefundeneKunden = sessionFactory.getCurrentSession()
 .createCriteria(Kunde.class)
  .add(Restrictions.ne("inaktiv", true))
  .add(Restrictions.in("typ",  search.getSelectedTypes()))
  .add(Restrictions.eq("geschlecht", search.getGenderFilter()))
  .add(Restrictions.between("datumLetzterKauf",search.getFromDate(),search.getUntilDate()))
  .add(Restrictions.disjunction()
   .add(Restrictions.like("name", "%"+search.getSearchStringName()+"%"))
   .add(Restrictions.like("ort", "%"+search.getSearchStringOrt()+"%"))
   .add(Restrictions.like("plz", "%"+search.getSearchStringPlz()+"%")))
  .addOrder(Order.asc("name"));
  .setMaxResults(search.getMaxResults())
  .list();