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.

Agregue valor a un Mono con Spring WebFlux.

Necesito copiar la propiedad Friends (que es un ArrayList) de un Mono<PersonEntity> a un Mono<UserEntity> (que no tiene la propiedad Friends en la base de datos), pero no encuentro la manera correcta de hacerlo, así que cuando mapeo el Mono<UserEntity> a Dto, el campo Friends se convierte en un array vacío [].

public Mono<Dto> findEntityByIdAndLabel(Long id, String label) {
    return getPersonByIdAndLabel(id, label).flatMap(person -> {
         return UserRepository.findByID(id);     
    })
            .switchIfEmpty(Mono.error(new EntityNotFoundException(entity.toString(), id.toString(), label)))
            .map(this::mapper);
}

Creo que debería agregar algo después de findById(id), pero todo lo que intenté hasta ahora no funcionó.
Gracias por su tiempo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para copiar la propiedad Friends de un Mono<personentity> a un Mono<userentity>, se puede usar el operador map para transformar el Mono<userentity> copiando la propiedad Friends del Mono<personentity>. Así es como se puede modificar el código para lograr esto:

    public Mono<dto> findEntityByIdAndLabel(Long id, String label) {
        return getPersonByIdAndLabel(id, label)
                .flatMap(person -> UserRepository.findByID(id)
                        .map(user -> {
                            // Copiar la propiedad Friends de person a user
                            user.setFriends(person.getFriends());
                            return user;
                        }))
                .switchIfEmpty(Mono.error(new EntityNotFoundException(entity.toString(), id.toString(), label)))
                .map(this::mapper);
    }
    

    En este código, usamos el operador flatMap para primero obtener la entidad PersonEntity y luego obtener la entidad UserEntity de la base de datos. Luego usamos el operador map para copiar la propiedad Friends de la entidad PersonEntity a la entidad UserEntity. Finalmente, usamos el operador switchIfEmpty para manejar el caso en que no se encuentra ninguna entidad en la base de datos.

Comments are closed.