我正在尝试检查数据库中的列是否不是空字符串或不为空,但我无法弄清楚如何使用条件构建器查询来执行此操作以取回实际对象。这个 sql 有效:
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[]{}));
它仍然返回整个列表。
原文由 Crystal 发布,翻译遵循 CC BY-SA 4.0 许可协议
请尝试以下