2009-11-11 13 views
6

Finora ho lavorato con solo un caso con 2 immobili con e operatore logico per cui uso LogicalExpression in questo modoLavorare con Hibernate criteri multipli con logica e

Criterion eqRef = Restrictions.eq("referenceID", referenceId); 
Criterion eqType = Restrictions.eq("verificationType", type); 
LogicalExpression and = Restrictions.and(eqRef, eqType); 

questa volta lungo la sua più di 2 quindi sono un po 'confused.say questa volta ho aggiunto proprietà nome utente che possa fare il concatenamento normale con

session.createCriteria(this.getPersistentClass()) 
.add(Restrictions.eq("referenceID", referenceId)) 
.add(Restrictions.eq("verificationType", type)) 
.add(Restrictions.eq("username", username)) 
.list(); 

ma ora non so che tipo di operatore logico utilizzato tra them.i'm anche tentato di fare questo:

ho visto anche l'eqAll ma non l'ho mai usato prima. Quindi avete qualche idea al riguardo? Come si fa, e grazie per aver letto questo.

risposta

10

Dato che "AND" sta includendo tutte le restrizioni, il raggruppamento è irrilevante, quindi è possibile continuare come nel secondo esempio, poiché non è possibile ottenere nulla raggruppandoli, ad es.

.add(Restrictions.eq("referenceID", referenceId)).add(Restrictions.eq("verificationType", type)).add(Restrictions.eq("username", username))... 

si corre in questo problema in cui è necessario gruppo misto "AND" e "OR" query, se si desidera raggruppare più "OR" valori è anche possibile aggiungere criteri ad una Disjunction

+0

grazie dude.Really apprezzato –

1

L'aggiunta di queste restrizioni crea individualmente una relazione di "AND" tra di loro. Questo è abbastanza buono per quello che ti serve.

+0

grazie per il vostro tempo –

0

ma ora non so quale tipo di operatore logico utilizzato tra di loro.

buone risposte già, ma come un a parte è possibile utilizzare la proprietà hibernate.show_sql, impostarlo su true, e sarete in grado di vedere esattamente ciò che i criteri di sql sta producendo.

+0

ok uomo grazie per readking –

-1

basta usare questo

criteria = session.createCriteria(Model.class).add(
          Restrictions.between("ModelDate", dateMin, dateMax)); 
+0

Ci può spiegare che cosa "ModelDate", "tglMin", e "tglMax" sono? Non li vedo nella domanda e non ho idea del perché li useresti. –

+0

ModelDate è la colonna della data da model/entity, tglMin & tglMax I mean dateMin & dateMax tra la restrizione. – irbef

Problemi correlati