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)