【发布时间】:2023-03-18 13:40:01
【问题描述】:
我有一个 Item 类,其中包含 Set 的 Tag 对象。现在我想用 JPA 找到所有包含 all 所需标签的项目(基于 Hibernate 4.1.9)。
我的存储库方法获得了一个 java.util.Set,该方法的主体如下所示:
entityManager.createQuery("select item from Item as item where item.tags in :tags")
.setParameter("tags", tags)
.getResultList()
在我看来是这样的solution,但我得到的只是错误消息:
IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: 意外结束子树[从models.Item中选择项目作为item.tags in ()]
如果我扭转局面
"select item from Item as item where :tags in item.tags"
我认为正确(而不是上述查询),我在最后一行 (getResultList()) 中得到一个 NullPointerException。
怎么了?
【问题讨论】:
-
如果我在没有
in的情况下表达它,则不会引发异常。所以这似乎是一个纯粹的 JPQL 问题。我发布了另一个question。