Si me he dado cuenta...
Código Java:
Ver originalif (grupoAplicacion != null && !grupoAplicacion.isNewObject()) { <--grupoAplicacion que envió
Root<GrupoAplicacion> grupoAplicacionRot = query.from(GrupoAplicacion.class);
Join<GrupoAplicacion, Aplicacion> aplicacionesJoin = grupoAplicacionRoot.join(GrupoAplicacion_.aplicaciones);
// AQUI ME FALTA DECIR QUE EL grupoAplicacionRoot sea el grupoAplicacion que envió, pero //no se la sintaxis
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
}
}