Java HQL连接语句
我有一个班的员工。它有一个主键ID和一个名为supervisorID的列。我想将主管ID显示为员工姓名,因此我必须将其连接回同一个表。我正在使用SpringRoo和Hibernate,所以我需要创建一个HQL查询来完成这项工作,但我不知道如何将SQL转换为HQL,下面是SQL查询的一个示例Java HQL连接语句,java,sql,hibernate,hql,spring-roo,Java,Sql,Hibernate,Hql,Spring Roo,我有一个班的员工。它有一个主键ID和一个名为supervisorID的列。我想将主管ID显示为员工姓名,因此我必须将其连接回同一个表。我正在使用SpringRoo和Hibernate,所以我需要创建一个HQL查询来完成这项工作,但我不知道如何将SQL转换为HQL,下面是SQL查询的一个示例 SELECT e.ID, e.name AS Employee, s.name AS Supervisor FROM employee e INNER JOIN employee s ON
SELECT e.ID, e.name AS Employee, s.name AS Supervisor
FROM employee e
INNER JOIN employee s
ON s.ID = e.supervisorID
ORDER BY e.ID;
看起来您需要一个标量查询
List<Object[]> rows = getEntityManager().createQuery(
"select e.id, e.name, s.name "
+ " from Employee e join fetch e.supervisor s "
+ " order by e.id").getResultList();
for ( Object[] row: rows ) {
// Construct an instance (or whatever) with the values
Long id = (Long) row[0];
String eName = (String) row[1];
String sName = (String) row[2];
}
List rows=getEntityManager().createQuery(
选择e.id、e.name、s.name
+“从员工e加入获取e.s主管”
+“按e.id排序”).getResultList();
对于(对象[]行:行){
//用这些值构造一个实例(或任何东西)
长id=(长)行[0];
字符串eName=(字符串)行[1];
字符串sName=(字符串)行[2];
}
无需在Hibernate中编写此类SQL。我将只依赖映射不同实体的映射。我还没有在Hibernate(包括JPA)中编写任何JoinSQL。它确实从来都不是必需的。它是如何映射的?如果您不知道如何进行查询,那么可能是您映射了错误的类。