Java - MAP DTO

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

MAP DTO

Publicado por gabriela paola (3 intervenciones) el 03/02/2020 19:11:01
Hola! estoy buscando ayuda con el siguiente codigo:

1
2
3
4
5
6
7
8
9
public Map<String, Object> gameViewDTO() {
    Map<String, Object> dto = new LinkedHashMap<String, Object>();
    dto.put("id", id);
    dto.put("created", this.joinDate);
    dto.put("gamePlayers", this.game.getGamePlayers().stream().map(GamePlayer::toDTO).collect(Collectors.toList()));
    dto.put("ships", this.getShips().stream().map(Ship::shipDTO).collect(Collectors.toList()));
    dto.put("salvoes", this.salvoes.stream().map(Salvo::salvoDTO).collect(Collectors.toList()));
    return dto;
}

Tengo ese DTO pero en la parte de "salvoes" necesita meter en ese key todos los salvoes que esta en gamePlayers y solo me guarda el primero,. Alguien tiene alguna idea? Por favor y muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

MAP DTO

Publicado por Rodrigo (623 intervenciones) el 04/02/2020 17:52:37
No parece haber suficiente informacion para ayudarte.
Si tienes que contar/insertar algo que esta en gamePlayers parece logico usar this.game.gamePlayers, pero cuando insertas los salvoes al.map solo usas this.salvoes.

No tengo idea lo que salvoes representa, pero la pregunta q haces, respecto a necesitar los salvoes q estan en gameplayers al.menos deberia hacer participar a los gamePlayers
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Omar
Val: 77
Ha disminuido su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

MAP DTO

Publicado por Omar (24 intervenciones) el 04/02/2020 19:28:50
Hola Gabriela al parecer todo depende de tu DTO y la manera en que estas agregando al map...
En esta linea
Map<String, Object> dto = new LinkedHashMap<String, Object>();
Estas agregando llave- valor en donde llave es un string y el valor es un objeto, OJO no es una lista de objetos.....
En la siguiente linea
this.salvoes.stream().map(Salvo::salvoDTO).collect(Collectors.toList().. .
salvoes lo tienes como un List o ArrayList.. por lo tanto al hacer un barrido de las listas buscando Salvo te regresa una lista de este objeto osea un List<Salvo> y esta lista no lo puedes meter en un Object...

ahora lo que tienes que hacer es..
1.- Convertir Map<String, Object> dto = new LinkedHashMap<String, Object>(); por
Map<String, List<? extends Object>> dtos = new LinkedHashMap<String, List<? extends Object>>();

2.- Usar un wrapper SalvoWrapperDTO y en esta clase irá solo un atributo tipo private List<Salvo> salvoes; con su getter y setter.
y en esta linea cambiar la siguiente linea

Cambiar
dto.put("salvoes", this.salvoes.stream().map(Salvo::salvoDTO).collect(Collectors.toList()));
por
SalvoWrapperDTO salvos= new SalvoWrapperDTO();
salvos.setSalvoes(this.salvoes.stream().map(Salvo::salvoDTO).collect(Collectors.toList()));
dto.put("salvoes", salvos);

Saludos, espero te sirva.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar