我不知道如何使JAP標準查詢結束與布爾輸出。如何正確確定「存在」JPA Criteria Query子句是否返回true或false?
的目標是有一個標準的查詢時,甲骨文呈現,看起來像這樣:
select 1 from dual where exists (...);
的where exists (...)
部分我用的子查詢一樣,我與外部查詢掙扎。
而這個的實際用法是確定exists
子句中的子查詢是否返回true
或false
。
這是我得到:
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Object> query = criteriaBuilder.createQuery();
query.from(Boolean.class);
query.select(criteriaBuilder.literal(true));
Subquery<Location> subquery = query.subquery(Location.class);
Root<Location> subRootEntity = subquery.from(Location.class);
subquery.select(subRootEntity);
Path<?> attributePath = subRootEntity.get("State");
Predicate predicate = criteriaBuilder.equal(attributePath, criteriaBuilder.literal("TX"));
subquery.where(predicate);
query.where(criteriaBuilder.exists(subquery));
TypedQuery<Object> typedQuery = em.createQuery(query);
但最後一行失敗布爾說不是一個實體。我認爲我的問題不知道如何表達查詢的「from」部分,因爲結果將爲1或0,true或false,而不是實體。
我知道我可以檢索任何實體,然後檢查結果列表是否具有大小1,但我試圖學習如何獲得布爾結果直接避免不必要的檢索這些列的任務,也學習怎麼做。
這可能嗎?
謝謝! Eduardo
不,你不能直接這樣做,但一個共同的方法是檢查結果集即的計數,如果計數大於零,則真,否則返回false。 – Shahzeb