2009-11-11 7 views
6

Hasta ahora he estado trabajando con sólo una caja con 2 propiedades con el operador y tan lógico, así que uso LogicalExpression al igual queTrabajar con múltiples criterios de hibernación con lógica y

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

esta vez a lo largo de sus más de 2 así que estoy un poco confused.say este tiempo he añadido la propiedad nombre de usuario que pueda hacer el encadenamiento normal con

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

pero ahora no sé qué tipo de operador lógico utilizado entre them.i'm También estoy tentado a hacer esto:

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

he visto el eqTodo demasiado pero nunca lo he usado antes.Así que tienes alguna idea al respecto? ¿Cómo lo haces, y gracias por leer esto.

Respuesta

10

Dado que "ANDA" todas las restricciones, la agrupación es irrelevante, por lo que puede continuar como en su segundo ejemplo, ya que no hay nada que ganar subgrupos, p. Ej.

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

usted funciona en este problema donde se necesita agrupar mezclado "Y" y "O" consultas, si desea agrupar varios "o" valores también se puede añadir criterios a un Disjunction

+0

gracias dude.Really apreciaba –

1

Agregar estas restricciones individualmente crea una relación de 'Y' entre ellas. Esto es lo suficientemente bueno para lo que necesita.

+0

gracias por su tiempo –

0

pero ahora no sé qué tipo de operador lógico usó entre ellos.

buenas respuestas ya, pero como un aparte se puede utilizar la propiedad hibernate.show_sql, ponemos a true, y serás capaz de ver exactamente lo que sus criterios sql está produciendo.

+0

hombre ok gracias por readking –

-1

Sólo usa esta

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

Puede explicar por qué "ModelDate", "tglMin", y "tglMax" son? No los veo en la pregunta y no tengo idea de por qué los usarías. –

+0

ModelDate es la columna de fecha del modelo/entidad, tglMin & tglMax Me refiero a la fechaMin & dateMax entre la restricción. – irbef

Cuestiones relacionadas