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 countryUuid
– Currency
, pero necesito pares siteUuid
– Currency
. ¿Es posible?</uuid,></uuid,>
davy.ai
Sí, es posible crear un
Map<uuid, currency="">
para el parsiteUuid
yCurrency
utilizando las entidades proporcionadas. Aquí hay una posible solución:Aquí, primero creamos un mapa
uuidCurrencyMap
de UUID de país a valores de divisa, recopilando todos los países delcountryService
. Luego usamos este mapa para crear el mapa deseadositeCurrencyMap
, donde asignamos el UUID de cada sitio al valor de divisa asociado a su UUID de país enuuidCurrencyMap
.</uuid,></uuid,></uuid,>