无法从 Java 中的两个连接实体创建地图
Cannot create map from two connected entities in Java
我有以下实体(为了简洁省略了不必要的部分):
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;
}
我有 List<UUID>
个 Site
并尝试为 siteUuid
和 Currency
对创建 Map<UUID, Currency>
。为了使用国家/地区列表,我尝试了如下所示的操作,但没有成功。
// get site list
final List<SiteDTO> siteList = siteService.findAllByUuidIn(siteUuidList);
// then get country list
final List<CountryDTO> countryList = siteList.stream()
.map(SiteDTO::getCountry).collect(Collectors.toList());
// then finall try to map them to Currency
final Map<UUID, CountryDTO> uuidCurrencyMap = countryList
.stream().collect(Collectors.toMap(CountryDTO::getUuid, Function.identity()));
然而,uuidCurrencyMap
给出 countryUuid
- Currency
对,但我需要 siteUuid
- Currency
对。那么,有可能吗?
以下应该有效:
List<SiteDTO> siteList = siteService.findAllByUuidIn(siteUuidList);
Map<UUID, Currency> siteCurrency = siteList.stream()
.collect(Collectors.toMap(SiteDTO::getUuid, siteDTO -> siteDTO.getCountry().getCurrency()));
我有以下实体(为了简洁省略了不必要的部分):
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;
}
我有 List<UUID>
个 Site
并尝试为 siteUuid
和 Currency
对创建 Map<UUID, Currency>
。为了使用国家/地区列表,我尝试了如下所示的操作,但没有成功。
// get site list
final List<SiteDTO> siteList = siteService.findAllByUuidIn(siteUuidList);
// then get country list
final List<CountryDTO> countryList = siteList.stream()
.map(SiteDTO::getCountry).collect(Collectors.toList());
// then finall try to map them to Currency
final Map<UUID, CountryDTO> uuidCurrencyMap = countryList
.stream().collect(Collectors.toMap(CountryDTO::getUuid, Function.identity()));
然而,uuidCurrencyMap
给出 countryUuid
- Currency
对,但我需要 siteUuid
- Currency
对。那么,有可能吗?
以下应该有效:
List<SiteDTO> siteList = siteService.findAllByUuidIn(siteUuidList);
Map<UUID, Currency> siteCurrency = siteList.stream()
.collect(Collectors.toMap(SiteDTO::getUuid, siteDTO -> siteDTO.getCountry().getCurrency()));