Tengo una tabla Aplicacion y una Tabla GrupoAplicacion.
Hago una busqueda de aplicaciones
Código Java:
Ver originalpublic Predicate toPredicate(Root<Aplicacion> aplicacion, CriteriaQuery<?> query, CriteriaBuilder cb) {
....
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 originalif (grupoAplicacion != null && !grupoAplicacion.isNewObject()) {
Root<GrupoAplicacion> grupoAplicacion = query.from(GrupoAplicacion.class);
Join<GrupoAplicacion, Aplicacion> aplicacionesJoin = grupoAplicacion.join(GrupoAplicacion_.aplicaciones);
if (asociadas) { // boolean
restrictionsList.add(cb.and(cb.in(aplicacion).value(aplicacionesJoin))); // carga las del join
} else {
restrictionsList.add(cb.not(cb.in(aplicacion).value(aplicacionesJoin))); // carga todas menos la del join
}
}
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.