簡體   English   中英

如何使用JPA聚合字符串?

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

另見: https //stackoverflow.com/a/24570617/363573

首先要使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM