En JPA no es difícil preguntar si tal propiedad de una entidad pertenece a una colección

List<Propiedad> coleccion = new ArrayList<Objeto>();

@PersistenceContext
private EntityManager entityManager;

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Objeto> cq = cb.createQuery(Objeto.class);
Root<Objeto> root = cq.from(Objeto.class);
cq.select(root);
cq.where(
root.get(Objeto_.propiedad).in(coleccion); //in
);

//etc.

Pero ¿cómo hacemos la operación inversa? Es decir, si nuestro objeto pertenece a una propiedad de Objeto (que sea una colección).

CriteriaBuilder provee un método isMember para ello:

//idem
cq.where(
cb.isMember(Propiedad, root.get(Objeto_.coleccionPropiedades);
);

tampoco es difícil entonces.
(Si fuera que una colección está incluída dentro de la otra,
o intersectan, etc. sería más interesante)

Este sitio utiliza cookies.    Leer más
Privacidad