如何在HQL

时间:2017-07-29 20:20:31

标签: sql hibernate hql

my query

我需要获取“Manager”表的“name”列。并显示上面给出的“Manager.name”的所有“Family”列。

SELECT Family.id, Family.name,Family.surname, Manager.name[Manager Name]
FROM Family
INNER JOIN Manager
ON Family.managerId=Manager.id;

我可以在Managment studio中执行此SQL查询,但是当我尝试添加到hibernate(DAO)类时,我遇到了这个错误:

  

请求处理失败;嵌套异常是   org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:   在第4行第1列附近[SELECT Family.id,   Family.name,Family.surname,Manager.name AS ManagerName

1 个答案:

答案 0 :(得分:0)

无需使用ON Family.managerId=Manager.id;。只需使用例如:

定义两个实体之间的关系
@ManyToOne
@JoinColumn(name="managerId")
private Manager manager;

SELECT f.id, f.name,f.surname, m.name
FROM Family AS f
INNER JOIN Manager AS m
  

更新

如果Family与Manager之间存在多对一的关系,您可以直接加载manager的属性,而不使用INNER JOIN:

@ManyToOne
@JoinColumn(name="managerId")
private Manager manager;

SELECT f.id, f.name,f.surname, f.manager.name
FROM Family AS f