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);
しかし、最後の行は、ブールが実体ではないと言って失敗します。
これは私が得たものです。私の問題は、結果が1または0、真または偽、およびエンティティではないので、クエリの「from」部分を表現する方法がわかりません。
私は任意のエンティティを取得し、結果のリストはサイズ1を持っているかどうかを確認することも可能だろうが、私はストレートの両方それらの列を取り出すの不必要な作業を回避し、また、学ぶために、ブール結果を取得する方法を学ぶためにしようとしていますどうやってするの。
これはまったく可能ですか?
ありがとうございました! Eduardo
をいいえ、あなたが直接それを行うことはできませんが、一般的な方法は、カウントがゼロ偽他の真よりも大きい場合、結果セットのすなわちの数をチェックすることです。 – Shahzeb