luchob / softuni-feb2023

The result from the Spring Advanced course, feb-march-2023
27 stars 14 forks source link

Проблем със search bar #34

Closed KristiyanVasilev96 closed 1 year ago

KristiyanVasilev96 commented 1 year ago

Здравей, Лъчо. От известно време имам проблем със сърч бара. Прегледах няколко пъти записа от миналогодишното издание на курса, но не се получава филтрацията. Когато филтрирам по някаква цена, излизат всички резултати. https://github.com/KristiyanVasilev96/LaptopFinder

luchob commented 1 year ago

:-) Виновен, предвид недоглеждането на Javadoc. Което е пример как като не прочетеш нещо добре може в следващата версия да се учудиш. Нека да го преработим с нещо подобно, което би било коректно:

@Override
    public Predicate toPredicate(Root<OfferEntity> root,
                                 CriteriaQuery<?> query,
                                 CriteriaBuilder cb) {

        final List<Predicate> predicates = new ArrayList<>();

        if (searchOfferDto.getMinPrice() != null) {
            predicates.add(cb.greaterThanOrEqualTo(root.get("price"), searchOfferDto.getMinPrice()));
        }

        if (searchOfferDto.getMaxPrice() != null) {
            predicates.add(cb.and(cb.lessThanOrEqualTo(root.get("price"), searchOfferDto.getMaxPrice())));
        }
        if (searchOfferDto.getModel() != null && !searchOfferDto.getModel().isEmpty()) {
            predicates.add(cb.and(cb.equal(root.join("model").get("name"), searchOfferDto.getModel())));
        }

        return cb.and(predicates.toArray(new Predicate[0]));
    }

Поздрави, Л.