2 votes

Ne peut pas créer de carte à partir de deux entités connectées en Java

J'ai les entités suivantes (les parties inutiles ont été omises pour des raisons de concision):

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;
}

J'ai une List de Site et j'essaie de créer une Map pour la paire siteUuid et Currency. J'ai essayé quelque chose comme indiqué ci-dessous en utilisant la liste de pays mais je n'ai pas réussi.

// obtenir la liste des sites
final List siteList = siteService.findAllByUuidIn(siteUuidList);

// puis obtenir la liste des pays
final List countryList = siteList.stream()
      .map(SiteDTO::getCountry).collect(Collectors.toList());

// puis essayer de les mapper en Currency
final Map uuidCurrencyMap = countryList
      .stream().collect(Collectors.toMap(CountryDTO::getUuid, Function.identity()));

Cependant, uuidCurrencyMap donne des paires de countryUuid - Currency, mais j'ai besoin de paires de siteUuid - Currency. Est-ce possible?

1voto

João Dias Points 704

Le code suivant devrait fonctionner :

List siteList = siteService.findAllByUuidIn(siteUuidList);
Map siteCurrency = siteList.stream()
  .collect(Collectors.toMap(SiteDTO::getUuid, siteDTO -> siteDTO.getCountry().getCurrency()));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X