我想檢查數據庫中的一列是不是一個空字符串或不爲空,但我無法弄清楚如何使用條件生成器查詢來做到這一點,以獲得回到實際的對象。這個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(new Predicate [predicates.size()]'並且看看它是否有效嗎? – VHS