2017-03-23 6 views
0

Map <>を含むエンティティを返すクエリをコンパイルしようとしています。このマップには、特定のキーと値のペアが含まれているか、このキーがまったく存在する必要はありません。私が持っているものJPQL:Map <>に特定のものが含まれているか、まったく含まれていない場合

SELECT M FROM Metadata M left outer JOIN M.additionals A 
WHERE M.UUID = :uuid 
AND M.versionVed = :versionVed 
AND 
KEY(A) = '" + Vedantas.SOFT_DEL + "' 
AND VALUE(A) <> 'true' 

これは、要件の最初の部分であるので、そのキーが全く存在しない場合には、結果を返すためのロジックを欠いています。

これを行うにはいくつかのエレガントな方法がありますか?

おかげ

答えて

0

のような何か:

"SELECT M FROM Metadata M where m.id not in (
    select subMetadata.id from Metadata subMetadata JOIN M.additionals A where 
     KEY(A) = :key AND VALUE(A) <> :value)" 

サブクエリは、彼らがメインクエリからフィルタリングすることができるように、あなたが探しているものと一致しない値を持つキーとIDを返します。

関連する問題