[英]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.