Playframework jpql查询多个
软件标签 我想创建一个查询,用于选择tag.id=id的所有软件 我写道: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 );
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
。