Aşağıdaki kodu vardır:zincirleme lambda akımı ile çağırır ve isteğe bağlı
userService.getUserWithAuthorityByLogin(principal.getName())
.map(user->userRepository.findAllByClient(user.getClient().getId()));
yöntem List<User>
türü iade findAllByClient. harita yöntemi, Optional<Object>
değerini döndürür. Durumumda (isteğe bağlı) bir Optional<List<User>>
döndürülebilir. Kodlamak istediğim fikir, bu isteğe bağlı listede bir akış kullanmaktır. Aramalarımı zincirlemek istiyorum. Java 8 tarzı kod iyi görünümlü ve daha az kod satırı.
Gerçekten varsa (mevcut) bu List<User>
işlemek gerekir. Çağrılarımı java8 api ile nasıl zincirleyebilirim: İsteğe Bağlı ve Akışı karıştırmak istiyorum.
Teşekkürler.
DÜZENLEME: Sen tüm süreci var
userService.getUserWithAuthorityByLogin(principal.getName())
.map(user->userRepository.findAllByClient(user.getClient().getId()).stream().forEach(user->
{
managedUserDTOs.add(new ManagedUserDTO(user));
}));
:
Ben biraz daha ileri devam ediyor. Ancak bu, listeyi doldurup son olarak iade etmek istiyorum.
EDIT2:
bütün sarma yöntemi: JAVA8 İÇİNDE İşte cevabı ancak DEĞİL
/**
* GET /users -> get all users.
*/
@RequestMapping(value = "/user-liste",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
@Transactional(readOnly = true)
@Secured({AuthoritiesConstants.TC_ADMIN})
public ResponseEntity<List<ManagedUserDTO>> getUserListe(Principal principal)
throws URISyntaxException {
return new ResponseEntity<>(managedUserDTOs, HttpStatus.OK);
}
Ben sorunuzun fikrim var, ama emin değilim.:. 'userService.getUserWithAuthorityByLogin (principal.getName()) .flatMap (kullanıcı> userRepository.findAllByClient (user.getClient() getId()) akışı foreach (her kullanıcı için); ' –
Aliaxander
tamam ben asıl gönderiyi düzenliyorum –
@FrancoisF Aradığına inanıyorum, 'userService.getUserWithAuthorityByLogin (principal.getName()) .map (user-> userRepository .findAllByClient (user.getClient(). getId()). stream().) .map (kullanıcı-> ManagedUserDTO :: new) .collect (Collectors.toList()) ' –