Playframework jpql查询多个

Playframework jpql查询多个,playframework,jpql,Playframework,Jpql,软件标签 我想创建一个查询,用于选择tag.id=id的所有软件 我写道: TypedQuery query = Software.em().createQuery( "SELECT DISTINCT s FROM Software s INNER JOIN s.tags WHERE s.tags.id = :tagId", Software.class );

软件标签

我想创建一个查询,用于选择tag.id=id的所有软件

我写道:

TypedQuery query =
              Software.em().createQuery(
               "SELECT DISTINCT s FROM Software s INNER JOIN s.tags WHERE s.tags.id = :tagId",
               Software.class
              );
              query.setParameter("tagId", tagId);
因此,我:

一个java.lang.IllegalArgumentException 被抓到了,, org.hibernate.QueryException:非法 尝试取消引用集合 带元素的[software0\u0.id.tags] 属性引用[id][选择 不同于模型的软件 内部连接s.tags,其中s.tags.id= :tagId]


我如何实现它?为什么我会有这样的例外?

我想问题可能是你的陈述中缺少了FROM子句。 给出错误“意外标记:内部”,因为它需要来自的

请尝试以下查询:

SELECT DISTINCT s FROM Software s INNER JOIN s.tags t WHERE t.id = :tagId
我会尝试:

Query q = JPA.em().createQuery("SELECT DISTINCT s FROM Software s join fetch s.tags t WHERE t.id = :tagId");
q.setParameter("tagId", tagId);

这应该能用。

我修好了。也许吧,但当我从中输入时,我得到:java.lang.IllegalArgumentException已被捕获,org.hibernate.QueryException:非法尝试使用元素属性引用[id]取消对集合[software0_uu2;.id.tags]的引用[SELECT DISTINCT s FROM models.Software s internal JOIN s.tags WHERE s s.tags.id=:tagId]尝试以下操作:
从软件的内部连接s.tags t中选择不同的s,其中t.id=:tagId