es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede crear un mapa a partir de dos entidades conectadas en Java.

Tengo las siguientes entidades (se omiten partes innecesarias por brevedad):

public class Site {
    private UUID uuid;
    private UUID countryUuid;
}
public class Country {
    private UUID uuid;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String code;

    @Column(nullable = false)
    private Currency currency;
}

Tengo una List<uuid> de Site y trato de crear un Map<uuid, currency=""> para el par siteUuid y Currency. He intentado algo como se muestra a continuación para utilizar la lista de países pero no lo he logrado.

// obtener lista de sitios
final List<sitedto> siteList = siteService.findAllByUuidIn(siteUuidList);

// luego obtener lista de países
final List<countrydto> countryList = siteList.stream()
      .map(SiteDTO::getCountry).collect(Collectors.toList());

// luego intentar mapearlos a Currency
final Map<uuid, countrydto=""> uuidCurrencyMap = countryList
      .stream().collect(Collectors.toMap(CountryDTO::getUuid, Function.identity()));

Sin embargo, uuidCurrencyMap proporciona pares countryUuidCurrency, pero necesito pares siteUuidCurrency. ¿Es posible?</uuid,></uuid,>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible crear un Map<uuid, currency=""> para el par siteUuid y Currency utilizando las entidades proporcionadas. Aquí hay una posible solución:

    // obtener la lista de sitios
    final List<sitedto> siteList = siteService.findAllByUuidIn(siteUuidList);
    
    // crear un mapa de UUID de país a divisa
    final Map<uuid, currency=""> uuidCurrencyMap = countryService.findAll().stream()
          .collect(Collectors.toMap(CountryDTO::getUuid, CountryDTO::getCurrency));
    
    // crear un mapa de UUID de sitio a divisa utilizando el mapa anterior
    final Map<uuid, currency=""> siteCurrencyMap = siteList.stream()
          .collect(Collectors.toMap(SiteDTO::getUuid, sitio -> uuidCurrencyMap.get(sitio.getCountryUuid())));
    
    // ahora tienes el mapa deseado de UUID de sitio a divisa
    

    Aquí, primero creamos un mapa uuidCurrencyMap de UUID de país a valores de divisa, recopilando todos los países del countryService. Luego usamos este mapa para crear el mapa deseado siteCurrencyMap, donde asignamos el UUID de cada sitio al valor de divisa asociado a su UUID de país en uuidCurrencyMap.</uuid,></uuid,></uuid,>

Comments are closed.