¿Cuál es la diferencia entre los operadores IN y MEMBER OF JPQL?¿Cuál es la diferencia entre los operadores IN y MEMBER OF JPQL?
Respuesta
IN tests es el valor de la expresión de ruta de un solo valor (atributo persistente de su entidad) en valores proporcionados a la consulta (o obtenidos a través de subconsulta).
MIEMBRO DE pruebas es el valor que ha proporcionado a la consulta (o se define con la expresión) miembro de valores en alguna colección en su entidad.
Lets de Uso ejemplo siguiente entidad:
@Entity
public class EntityA {
private @Id Integer id;
private Integer someValue;
@ElementCollection
List<Integer> listOfValues;
public EntityA() { }
public EntityA(Integer id, Integer someValue, List<Integer> listOfValues) {
this.id = id;
this.someValue = someValue;
this.listOfValues = listOfValues;
}
}
Y siguientes datos de prueba:
EntityA a1 = new EntityA(1, 1, Arrays.asList(4, 5, 6));
EntityA a2 = new EntityA(2, 2, Arrays.asList(7, 8, 9));
Con siguiente consulta obtenemos A1 como resultado de ello, porque es someValue es uno de los (0,1, 3). Uso de literales en la consulta (SELECCIONE FROM FROM una entidad A WHERE a.someValue IN (0, 1, 3)) produce el mismo resultado.
TypedQuery<EntityA> queryIn = em.createQuery(
"SELECT a FROM EntityA a WHERE a.someValue IN :values", EntityA.class);
queryIn.setParameter("values", Arrays.asList(0, 1, 3));
List<EntityA> resultIn = queryIn.getResultList();
Con siguiente consulta obtenemos a2 como resultado, porque 7 es uno de los valores en listOfValues:
TypedQuery<EntityA> queryMemberOf = em.createQuery(
"SELECT a FROM EntityA a WHERE :value MEMBER OF a.listOfValues", EntityA.class);
queryMemberOf.setParameter("value", 7);
List<EntityA> resultMemberOf = queryMemberOf.getResultList();
Esta funcionalidad (incluyendo la recolección como parámetro) se define en JPA especificación 2.0 y no es específico para Hibernate (el código anterior funciona, por ejemplo, con EclipseLink).
IN
prueba si un valor es uno de una lista fija explícita de literales o parámetros de consulta.
MEMBER OF
prueba si un valor está presente en una colección JPA, es decir, una colección que en realidad es parte del modelo de objetos.
- 1. ¿Cuál es la diferencia entre HttpMethod y RequestType of HttpRequest?
- 2. Cuál es la diferencia entre & y operadores & en C#
- 3. ¿Cuál es la diferencia entre INTERSECT y WHERE IN?
- 4. ¿Cuál es la diferencia entre .replace y -replace in powershell?
- 5. ¿Cuál es la diferencia entre: while y: when in clojure?
- 6. ¿Cuál es la diferencia entre los operadores de cortocircuito de Perl (o, y) y (||, &&)?
- 7. ¿Cuál es la diferencia entre los operadores * y the & en la programación c?
- 8. ¿Cuál es la diferencia entre los operadores de prefijo y postfijo?
- 9. Cuál es la diferencia entre $ y jQuery
- 10. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 11. ¿Cuál es la diferencia entre for..in y for each..in en javascript?
- 12. ¿Cuál es la diferencia entre `=` y `<-` en R?
- 13. Cuál es la diferencia entre functors y "genéricos"
- 14. ¿Cuál es la diferencia entre & y && en MATLAB?
- 15. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 16. ¿Cuál es la diferencia entre ".equals" y "=="?
- 17. ¿Cuál es la diferencia entre 'eq' y '= ~' en Perl?
- 18. ¿Cuál es la diferencia entre el operador "=" y "==" en Bash?
- 19. ¿Cuál es la diferencia entre {0} y ""?
- 20. Cuál es la diferencia entre = y: =
- 21. ¿Cuál es la diferencia entre .ToString (+) y ""
- 22. Cuál es la diferencia entre $ (...) y `...`
- 23. ¿cuál es la diferencia entre:.! y: r !?
- 24. ¿Cuál es la diferencia entre dict() y {}?
- 25. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 26. ¿Cuál es la diferencia entre + = y = +?
- 27. ¿Cuál es la diferencia entre " " y ""?
- 28. ¿Cuál es la diferencia entre los eventos Control.Enter y Control.GotFocus?
- 29. ¿cuál es la diferencia entre los navegadores y el nodo?
- 30. ¿Cuál es la diferencia entre los archivos .lib y .a?
No sé si es algo específico de hibernación, pero IN funciona con colecciones aquí ... pero el miembro de parece más apropiado de todos modos. –
usando JPA con Hibernate como proveedor, el uso de IN no funcionó. Tuve que usar MIEMBRO DE. – Amalgovinus