Filtrar por un entity Referenciado
Last updated
Was this helpful?
Last updated
Was this helpful?
Contamos un entity @Referenced() Conductor dentro de un entity Viajes
Deseamos filtarlo mediante un autocomplete.
Entity
public class Viaje {
@Id
private Integer idviaje;
@Referenced(documment = "Vehiculo",
field = "idvehiculo", javatype = "Integer", lazy = false,
repository = "com.avbravo.transporteejb.repository.VehiculoRepository")
private Vehiculo vehiculo;
@Referenced(documment = "Conductor",
field = "idconductor", javatype = "Integer", lazy = false,
repository = "com.avbravo.transporteejb.repository.ConductorRepository")
private Conductor conductor;
private String comentarios;
private Double kmestimados;
private Double costocombustible;
private Date fechahorainicioreserva;
private Date fechahorafinreserva;
private String activo;
private String lugarpartida;
private String lugardestino;
private String realizado;
@Embedded
List<UserInfo> userInfo;
//set/get
}
Formulario
Agregar el componente <e:autocompleteconductor>
<b:row>
<b:column medium-screen="6">
<p:outputLabel value="#{msg['field.conductor']}"/>
<e:autocompleteconductor listener="#{viajeController.searchBy('conductor')}"
value="#{viajeController.lookupServices.conductor}"
itemLabel=" #{p.nombre}"
dropdown="true"
minQueryLength="0"
field="nombre"
update=" :form:dataTable"/>
</b:column>
</b:row>
Agregar un objeto de tipo Conductor
private Conductor conductor;
//set/get
@Override
public String searchBy(String string) {
try {
loginController.put("searchviaje", string);
writable = true;
move();
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
return "";
}// </editor-fold>
Agregar el case para conductor
case "conductor":
if (lookupServices.getConductor().getIdconductor()!= null) {
viajeList = viajeRepository.findPagination(new Document("conductor.idconductor", lookupServices.getConductor().getIdconductor()), page, rowPage, new Document("idviaje", -1));
} else {
viajeList = viajeRepository.findPagination(page, rowPage, sort);
}
break;
Segmento de código
@Override
public void move() {
try {
Document doc;
Document sort = new Document("idviaje", -1);
switch (loginController.get("searchviaje")) {
case "_init":
case "_autocomplete":
viajeList = viajeRepository.findPagination(page, rowPage, sort);
break;
case "_betweendates":
viajeList = viajeRepository.filterBetweenDatePaginationWithoutHours("activo", "si", "fechahorainicioreserva", lookupServices.getFechaDesde(), "fechahorafinreserva", lookupServices.getFechaHasta(), page, rowPage, new Document("idviaje", -1));
break;
case "conductor":
if (lookupServices.getConductor().getIdconductor()!= null) {
viajeList = viajeRepository.findPagination(new Document("conductor.idconductor", lookupServices.getConductor().getIdconductor()), page, rowPage, new Document("idviaje", -1));
} else {
viajeList = viajeRepository.findPagination(page, rowPage, sort);
}
break;
case "idviaje":
if (lookupServices.getIdviaje() != null) {
viajeList = viajeRepository.findPagination(new Document("idviaje", lookupServices.getIdviaje()), page, rowPage, new Document("idviaje", -1));
} else {
viajeList = viajeRepository.findPagination(page, rowPage, sort);
}
break;
default:
viajeList = viajeRepository.findPagination(page, rowPage, sort);
break;
}
viajeFiltered = viajeList;
viajeDataModel = new ViajeDataModel(viajeList);
} catch (Exception e) {
errorServices.errorDialog(nameOfClass(),nameOfMethod(), nameOfMethod(), e.getLocalizedMessage());
}
}// </editor-fold>
Queremos filtrar solo los viajes de ese conductor.