大家好我正在使用JPA,并且下面有这样的查询:
Select emp.aid, emp.surname from employees emp
查询将记录存储在List<Object []>
列表中。
如果emp.aid是一个长整数而emp.surname是一个String,那么从结果中获取两个列表的最有效方法是什么。一个是List<Integer>
,另一个是List<String>
两者中的订单必须在拆分过程中保持同步。这样做表现最明智的方法是什么?
答案 0 :(得分:2)
我不会有两个包含关联元素的列表,而是创建一个包含两个字段(Employee
,id
)的surname
类,而不是存储从中返回的每个记录查询到Object[]
为每个返回的记录构造一个新的Employee
对象,提供适当的数据。
这样你甚至不需要处理处理List<Object[]>
的复杂性,然后确保当它被分成两个不同类型的列表时,每个id
的{{1}}整数列表必须与String列表中的name
位于同一位置。
但是,如果您希望继续使用当前的方法,可以执行以下操作:
List<Integer> idList = tempList.stream()
.map(e -> (Integer)e[0]).collect(Collectors.toList());
和相应的名称:
List<String> nameList = tempList.stream()
.map(e -> (String)e[1]).collect(Collectors.toList());
其中tempList
定义为List<Object[]> tempList
。