首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jpql查询多个

jpql查询多个
EN

Stack Overflow用户
提问于 2011-04-06 09:02:47
回答 2查看 912关注 0票数 1

软件<-m:n->标签

我想为选择tag.id = id的所有软件创建查询

我写道:

代码语言:javascript
复制
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);

因此,我有:

A java.lang.IllegalArgumentException已被捕获,org.hibernate.QueryException:非法尝试使用元素属性引用id取消引用收集software0_.id.tags

我怎样才能实现它?为什么我会有这样的例外?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-06 09:16:32

我认为问题可能是你在陈述中漏掉了FROM子句。给出“意外令牌:内部”错误是因为它需要一个FROM。

尝试以下查询:

代码语言:javascript
复制
SELECT DISTINCT s FROM Software s INNER JOIN s.tags t WHERE t.id = :tagId
票数 2
EN

Stack Overflow用户

发布于 2011-04-06 09:43:10

我试着:

代码语言:javascript
复制
Query q = JPA.em().createQuery("SELECT DISTINCT s FROM Software s join fetch s.tags t WHERE t.id = :tagId");
q.setParameter("tagId", tagId);

这应该能行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5563871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档