Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/11/2014, 10:41
jlgarcia1977
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 1 mes
Puntos: 5
Join Criteria JPA

Tengo una tabla Aplicacion y una Tabla GrupoAplicacion.
Hago una busqueda de aplicaciones
Código Java:
Ver original
  1. public Predicate toPredicate(Root<Aplicacion> aplicacion, CriteriaQuery<?> query, CriteriaBuilder cb) {
  2. ....

Quiero cargar dos listados de aplicaciones pero filtrados,
1-que en uno salga todos las aplicaciones menos las del grupo que le envío,
2- y en el otro al revés.

Código Java:
Ver original
  1. if (grupoAplicacion != null && !grupoAplicacion.isNewObject()) {
  2.       Root<GrupoAplicacion> grupoAplicacion = query.from(GrupoAplicacion.class);
  3.       Join<GrupoAplicacion, Aplicacion> aplicacionesJoin = grupoAplicacion.join(GrupoAplicacion_.aplicaciones);
  4.  
  5.       if (asociadas) { // boolean
  6.         restrictionsList.add(cb.and(cb.in(aplicacion).value(aplicacionesJoin))); // carga las del join
  7.       } else {
  8.         restrictionsList.add(cb.not(cb.in(aplicacion).value(aplicacionesJoin))); // carga todas menos la del join
  9.       }
  10.  
  11.     }

El primer caso no me sale bien, ya que salen las aplicaciones repetidas.
No se si la sintaxis esta bien, necesito que en "aplicacionJoin" me cargue la aplicaciones del grupo en cuestión.
Para que si le paso asociadas = true me carge todas menos las del grupo.
y si le paso asociadas = false, me carge las del propio grupo.