【问题标题】:JPQL: result if Map<> contains specific or doesn't contain at allJPQL:如果 Map<> 包含特定或根本不包含,则结果
【发布时间】:2017-03-23 09:01:35
【问题描述】:

我正在尝试编译一个查询,该查询将返回一个包含 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'

这是要求的第一部分,因此如果该键根本不存在,则它缺乏返回结果的逻辑。

有什么优雅的方法可以做到这一点吗?

谢谢

【问题讨论】:

    标签: java mysql eclipselink jpa-2.0


    【解决方案1】:

    类似:

    "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 的键值与您要查找的值不匹配,从而可以从主查询中过滤掉它们。

    【讨论】:

      猜你喜欢
      • 2022-08-02
      • 2020-05-08
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 2022-08-15
      • 2014-03-08
      相关资源
      最近更新 更多