Cześć ukeiłem taką metodę jak poniżej, w metodzie tej wyszukuje sobie samochody, myślałem że z każdym ifem lista samochodów zostanie okrojona o warunek który postawiłem np brand=bmw, color=black, fuel=diesel miało zwracać czarne bmw w dieslu
a niestety zwraca wszystkie samochody w dieslu z bazy danych. Dzieje się to przez to że query nie jest "aktualizowane" tylko z każdym ifem jest nadpisywane i niestety nie potrafię tego przeskoczyć... :/
@Override
public List<Car> search(String brand, String model, String type, Integer registrationYear, String color,
String fuel, String transmission, String doors, boolean available){
CriteriaBuilder cb=entityManager.getCriteriaBuilder();
CriteriaQuery<Car> query=cb.createQuery(Car.class);
Root<Car> car=query.from(Car.class);
query.select(car);
if(brand!=null){
query.where(cb.equal(car.get("brand"), brand));
}
if(model!=null){
query.where(cb.equal(car.get("model"), model));
}
if(type!=null){
query.where(cb.equal(car.get("type"), type));
}
if(registrationYear !=null){
query.where(cb.equal(car.get("registrationNumber"), registrationYear));
}
if(color!=null){
query.where(cb.equal(car.get("color"), color));
}
if(fuel!=null){
query.where(cb.equal(car.get("fuel"), Fuel.stringToFuelEnum(fuel)));
}
if(transmission!=null){
query.where(cb.equal(car.get("transmission"), Transmission.stringToTransmissionEnum(transmission)));
}
if(doors!=null){
query.where(cb.equal(car.get("doors"), doors));
}
TypedQuery<Car> query1=entityManager.createQuery(query);
List<Car> s=query1.getResultList();
return query1.getResultList();
}
.andy