[英]How to aggregate strings with JPA?
基础数据:
DEPTNO ENAME
------ ------
20 SMITH
30 ALLEN
30 WARD
20 JONES
30 MARTIN
30 BLAKE
10 CLARK
20 SCOTT
10 KING
30 TURNER
20 ADAMS
30 JAMES
20 FORD
10 MILLER
期望的输出:
DEPTNO EMPLOYEES
------ ---------
10 CLARK,KING,MILLER
20 SMITH,FORD,ADAMS,SCOTT,JONES
30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD
我试过这个jpql查询:
SELECT deptno, new list(ename) as employees
FROM dept_emp
但是会引发异常:
org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:新近第1行,第15列
JPA 2.1
Hibernate 4.3.1
首先要使用jpa,你应该是实体类。
@Entity
class Employee {
int deptNo;
String name;
}
查询是
SELECT e.deptNo , new list(e.name) FROM Employee e GROUP BY e.deptNo
您正在尝试使用JPQL查询在持久层中实现与UI相关的功能(如何显示数据)。 这是个坏主意。 使用持久层检索UI层中的数据,然后根据需要格式化数据。 例如:
List<Employee> employees = em.createQuery("select e from Employee e").getResultList();
在您的表示层:
Multimap<String, Employee> employeesByDepartment =
Multimaps.index(employees, Employee::getDepartmentNumber);
for (String departmentNumber : employeesByDepartment.keySet()) {
System.out.print(departmentNumber);
System.out.print("\t");
System.out.println(Joiner.on(", ").join(employeesByDepartment.get(departmentNumber)));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.