Я пытаюсь проверить, не является ли столбец в db пустой строкой или не является нулевым, но я не могу понять, как это сделать с запросами построителя критериев, чтобы получить фактические объекты назад. Это SQL работает:Запрос строителя критериев Java не пустой или пустой
sampleName is not null and sampleName != ''
Но когда я пытаюсь сделать это с критериями строителя, как это:
// это в частном методе filterBySampleNotEmpty
cb.notEqual(root.get("sampleName"), "");
называют это в другом методе
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Sample> query = criteriaBuilder.createQuery(Sample.class);
Root model = query.from(Sample.class);
List<Predicate> predicates = new ArrayList<>();
predicates.add(filterBySampleNotEmpty(model, criteriaBuilder));
query.select(model).where(predicates.toArray(new Predicate[]{}));
Он возвращает весь список еще.
Можете ли вы показать немного больше кода? Как вы создали/сконфигурировали cb и root? –
@ EddieCurtis Неплохо, я добавил еще. – Crystal
В предложении 'where' вы можете попробовать 'predicates.toArray (новый Predicate [predicates.size()]' и посмотреть, работает ли это? – VHS