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

Formulario

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