Criteria Builder Convert Lower другой вариант - PullRequest
0 голосов
/ 06 декабря 2018

Куда бы я ни посмотрел, я вижу людей, использующих это

predicate = 
    criteriaBuilder.like(criteriaBuilder.lower(root.get(Product_.prodName)), 
                         wrapper.getProdName());

, особенно я имею в виду это Product_.prodName.Я понятия не имею, что это такое, что оно делает, и почему я не могу использовать его в моем контексте.Вот мой код, который не работает:

Посмотрите на строку с! Nachname.isEmpty

CriteriaBuilder builder = em.getCriteriaBuilder();
        CriteriaQuery<Telefonbuch> query = builder.createQuery(Telefonbuch.class);
        Root<Telefonbuch> root = query.from(Telefonbuch.class);

        EntityType<Telefonbuch> model = em.getMetamodel().entity(Telefonbuch.class);
        List<Predicate> predicates = new ArrayList<Predicate>();

        if (!vorname.isEmpty()) {   
            Predicate condition = builder.like(root.<String>get("vorname"),"%"+vorname+"%");
            predicates.add(condition);
        }
        if (!nachname.isEmpty()) {
            Predicate condition = builder.like(builder.lower(root.get("nachname"),"%"+nachname+"%"));
            predicates.add(condition);
        }

        query.select(root).where(predicates.toArray(new Predicate[predicates.size()]));
        eintraege = em.createQuery(query).getResultList();
...