首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HQL : HQL查询中的多个内部联接

HQL : HQL查询中的多个内部联接
EN

Stack Overflow用户
提问于 2013-06-28 15:29:09
回答 1查看 7.6K关注 0票数 1

我的项目中有许多实体,我想使用HQL查询从多个实体中检索数据。在HQL查询中,我尝试使用连接来检索实体中的数据,但它在代码执行时会产生异常。以下是例外情况:

代码语言:javascript
复制
org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [SELECT s.id, s.name, s.url, s.uuid, s.createdBy , t.id , u.id , u.name FROM com.insonix.qrata.models.Site s INNER JOIN s.topics t INNER JOIN User u  WHERE lower(s.name) LIKE lower(:name)  AND s.createdBy IN (:created_by) AND u.id = s.createdBy]

以下是查询:

代码语言:javascript
复制
SELECT s.id, s.name, s.url, s.uuid, s.createdBy , t.id , u.id , u.userinfo.firstname , u.userinfo.lastname FROM Site s INNER JOIN s.topics t INNER JOIN User u WHERE lower(s.name) LIKE lower(:name)  AND s.createdBy IN (:created_by) AND u.id = s.createdBy

以下是我的实体:

代码语言:javascript
复制
public class CommonEntity {
-------------------
 private Long createdBy;
 private String uuid;
------------------------
}

public class Site extends CommonEntity{
 private long id;
 private String url;
 private String name;
 private Category category;
 private List<Topic> topics = new ArrayList<>(0);
  ---------------------------
}

public class Topic extends CommonEntity{
 private int id;
 private List<Site> sites = new ArrayList<Site>(0);
----------------------------------- 
}

public class User extends CommonEntity
 private long id;
 private UserInfo userinfo;
--------------------------------
}

public class UserInfo extends CommonEntity{
 private String firstname;
 private String lastname;
}
EN

回答 1

Stack Overflow用户

发布于 2013-07-01 17:18:54

路径预期错误显示hibernate正在尝试查找关联或映射b/w用户和站点。为了让hibernate加入实体,您必须定义关联。hibernate中没有ON子句,因此在上面的查询中,您将如何指定在何处连接'INNER join User u ON?‘,(https://stackoverflow.com/a/12669051/830945)

您可以获得所需的结果,如下所示

代码语言:javascript
复制
SELECT s.id, s.name, s.url, s.uuid, s.createdBy, t.id , u.id , u.userinfo.firstname , u.userinfo.lastname FROM Site s, User u INNER JOIN s.topics t WHERE lower(s.name) LIKE lower(:name)  AND s.createdBy IN (:created_by) AND u.id = s.createdBy
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17359471

复制
相关文章

相似问题

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