如何在 HQL 中重写此 sql 代码

How to rewrite this sql code in HQL

我需要获取 "Manager" 的 "name" 列 table.and 显示所有带有 "Manager.name" 的“家庭”列,如上所示。

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

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

Request processing failed; nested exception is org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ON near line 4, column 1 [SELECT Family.id, Family.name,Family.surname, Manager.name AS ManagerName

不需要使用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

UPDATE

如果 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