小编Nab*_*abi的帖子

如何通过 Java 中的 JPA 2.1 获得包含属性和列表的多选结果?

目标是使用多选获取员工的名字、姓氏和待办事项列表:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> q = cb.createTupleQuery();
Root emp = q.from(Employee.class);

q.multiselect(
    emp.get("firstName").alias("fname"),
    emp.get("lastName").alias("lname"),
    emp.get("toDoList").alias("toDoList")
).where(cb.equal(emp.get("id"), 12345));

List<Tuple> tuples = em.createQuery(q).getResultList();
Iterator<Tuple> iter = tuples.iterator();

while(iter.hasNext()){
    Tuple t = iter.next();
    //t.get("fName");     // returns String
    //t.get("lName");     // returns String
    //t.get("toDoList");  // returns String

    //?????
    //...

}
Run Code Online (Sandbox Code Playgroud)

toDoList 只是一个简单的字符串列表。假设员工 12345 有 4 个待办事项。这意味着我得到以下结果集:

---------------------------------
| firstName | lastName | toDo   |
---------------------------------
| John      | Doe      | sleep  |
---------------------------------
| John      | Doe      | eat    |
---------------------------------
| John …
Run Code Online (Sandbox Code Playgroud)

jpa projection one-to-many

5
推荐指数
1
解决办法
1869
查看次数

标签 统计

jpa ×1

one-to-many ×1

projection ×1