L'interfaccia Session fornisce il metodo createCriteria(), il quale crea un oggetto Criteria che restituisce istanze della classe dell'oggetto in persistenza.
Di seguito un semplice esempio di una query criteria che restituisce un oggetto corrispondente alla classe Utente.
Criteria cr = session.createCriteria(Utente.class);
List results = cr.list();
List results = cr.list();
E' possibile usare il metodo add() per aggiungere restrizioni alle query con criteria. Supponendo di disporre di una tabella "utente" contenente un campo "eta", l'esempio di seguito aggiunge una restrizione che restituisce gli utenti con un'età superiore ai 30 anni.
Criteria cr = session.createCriteria(Utente.class);
cr.add(Restrictions.eq("eta", 30));
List results = cr.list();
cr.add(Restrictions.eq("eta", 30));
List results = cr.list();
Di seguito altri esempi di Restrictions.
Criteria cr = session.createCriteria(Utente.class);
// Restituisce utenti con età superiore ai 30 anni.
cr.add(Restrictions.gt("eta", 30));
// Restituisce utenti con età inferiore ai 30 anni.
cr.add(Restrictions.lt("eta", 30));
// Restituisce utenti col nome che inizia con Gian
cr.add(Restrictions.like("nome", "Gian%"));
// Restituisce utenti con età compresa tra i 20 e i 30 anni.
cr.add(Restrictions.between("eta", 20, 30));
// Verifica se il campo è nullo
cr.add(Restrictions.isNull("eta"));
// Verifica che il campo non sia vuoto
cr.add(Restrictions.isNotEmpty("eta"));
// Restituisce utenti con età superiore ai 30 anni.
cr.add(Restrictions.gt("eta", 30));
// Restituisce utenti con età inferiore ai 30 anni.
cr.add(Restrictions.lt("eta", 30));
// Restituisce utenti col nome che inizia con Gian
cr.add(Restrictions.like("nome", "Gian%"));
// Restituisce utenti con età compresa tra i 20 e i 30 anni.
cr.add(Restrictions.between("eta", 20, 30));
// Verifica se il campo è nullo
cr.add(Restrictions.isNull("eta"));
// Verifica che il campo non sia vuoto
cr.add(Restrictions.isNotEmpty("eta"));
Con Criteria è possibile anche ordinare e aggregare i risultati.
Criteria cr = session.createCriteria(Utente.class);
// Ordina gli utenti per età discendente
cr.addOrder(Order.desc("eta"));
// Conta le righe totali.
cr.setProjection(Projections.rowCount());
// Restituisce l'età più alta.
cr.setProjection(Projections.max("eta"));
// Restituisce l'età media.
cr.setProjection(Projections.avg("eta"));
// Ordina gli utenti per età discendente
cr.addOrder(Order.desc("eta"));
// Conta le righe totali.
cr.setProjection(Projections.rowCount());
// Restituisce l'età più alta.
cr.setProjection(Projections.max("eta"));
// Restituisce l'età media.
cr.setProjection(Projections.avg("eta"));
Hai apprezzato questo post? Conferma le mie competenze o scrivi una segnalazione sul mio profilo Linkedin!