У меня есть DTO, как показано ниже
public class UserDTO implements Serializable {
private String id;
private String fullName;
private String phone;
private String role;
private List<String> roleList;
public UserDTO(String id, List<String> roleList) {
super();
this.id = id;
this.roleList = roleList;
}
}
У меня есть список UserDTO
, где roleList
не заполняется, а role
заполняется. Проблема в том, что role
может быть несколько, но почему-то мне не удается получить список в одном запросе. Итак, я хочу сгруппировать по идентификатору и сгенерировать roleList
.
Например, у меня есть следующие строки:
id fullName phone role roleList
------------------------------------------------
abc Sarwar 017xxx admin NULL
abc Sarwar 017xxx operator NULL
I want it to be like the following
abc Sarwar 017xxx NULL ArrayList<String>(admin, operator)
Я пробовал следующее, но это не работает (не следует Хотя, но я не могу понять, что это должно быть) поэтому я ищу вашей помощи:
Map<String, List<UserDTO>> resultsWithSameIdAndName = users.stream()
.collect(Collectors.groupingBy(r -> r.getId()));
List<UserDTO> mergedResults = resultsWithSameIdAndName.entrySet().stream()
.map(e -> new UserDTO(e.getKey(),
e.getValue().stream().map(r -> r.getRole()).collect(Collectors.toList())))
.collect(Collectors.toList());
Заранее спасибо.