JPQL子查询与参数的相等性

时间:2018-03-07 01:24:56

标签: java database subquery jpql

我如何在JPQL中完成以下内容?

SELECT item
  FROM Item item
  WHERE (
    SELECT tag.name, tag.color
    FROM Tag tag
    WHERE tag.item = item
    ORDER BY tag.name, tag.color
  ) = :tags

其中:tags是一组字符串(按名称和颜色排序),通过.getQuery().setParameter("tags", tags)作为参数传入。

基本思想是假设我有一组项目,每个项目都有0 +字符串和颜色的关联标签,我希望找到任何具有特定名称/颜色标签集的项目。 / p>

我已尝试使用上面显示的内容作为查询,但我得到了模糊的错误The right expression is not a valid expression。它似乎与子查询有问题。有任何想法吗?我不太关心解决方案与我上面的模板有多相似,只要它符合基本思想(并且可以动态指定目标标签集)。

1 个答案:

答案 0 :(得分:0)

好吧,我想我已经找到了一种方法,或多或少。

然而,假设/要求给定项目X,任何标签名称在X上最多只能显示一次。可能可以修改方法以允许完全重复的标签,但我不需要那个,所以我还没试图弄明白。

(...)