Filtrar embebidos referenciados de forma inversa
Contamos con dos Entity: Viaje y Soliicitud.
En solicitud almacenamos un List<Viaje> Referenciado
Deseamos buscar los Viajes que tengan realizado = no y que no aparezcan en la lista embebida de Solicitud
Menu

Formulario

Entity

Controller
case "viajesinsolicitud":
viajeList = new ArrayList<>();
Bson filter_ = Filters.eq("realizado", "no");
List<Viaje> list = viajeRepository.findBy(filter_, new Document("idviaje", -1));
if (list != null || list.isEmpty()) {
}
//Busca en la solicitud si existe una solicitud con ese viaje asignado
for (Viaje v : list) {
Bson filter = Filters.or(
Filters.eq("viaje.0.idviaje", v.getIdviaje()),
Filters.eq("viaje.1.idviaje", v.getIdviaje())
);
List<Solicitud> solicitudList = solicitudRepository.findBy(and(eq("activo","si"),filter), new Document("idsolicitud", -1));
if(solicitudList ==null || solicitudList.isEmpty()){
viajeList.add(v);
}
}
break;
.xhtml
<b:row>
<b:column medium-screen="25" >
<a:searchBetweenDate
renderedMove="true"
labelDesde="#{msg['field.fechainicio']}"
valueDesde="#{viajeReporteController.lookupServices.fechaDesde}"
labelHasta="#{msg['field.fechafin']}"
valueHasta="#{viajeReporteController.lookupServices.fechaHasta}"
renderedList="#{applicationMenu.viaje.list}"
search="#{viajeReporteController.searchBy('viajesinsolicitud')}"
/>
</b:column>
</b:row>
Last updated
Was this helpful?