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.

Quarkus Mutiny: Manejo de compilación de desajuste de tipo de Neo4j.

Este es mi código:

@Path("/hello")
@AllArgsConstructor
public class GreetingResource {
    private final Driver driver;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public Uni<string> hello() {
        return Multi.createFrom().resource(
            driver::rxSession,
            session -> session.readTransaction(tx -> {
                RxResult result = tx.run("MATCH (f:Fruit) RETURN f.name as name ORDER BY f.name");
                return Multi.createFrom().publisher(result.records()).map(record -> record.get("name").asString());
            })
        ).withFinalizer(session -> {
            return Multi.createFrom().publisher(session.close());
        });
    }
}

Estoy obteniendo estos dos mensajes de compilación:

Type mismatch: cannot convert from Multi<object> to Uni<string>
Type mismatch: cannot convert from Multi<object> to Uni<void>

No entiendo por qué, ya que record.get("name").asString() me devuelve un String

¿Alguna idea?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el tipo de retorno de Multi.createFrom().publisher(result.records()).map(record -> record.get("name").asString()). Este código devuelve un Multi<string>, pero el método hello() tiene un tipo de retorno de Uni<string>.

    Para solucionarlo, puede reemplazar Multi.createFrom().resource(...) con Uni.createFrom().resource(...) para asegurarse de que el tipo de retorno del método sea consistente con el tipo de retorno de Multi.createFrom().publisher(result.records()).map(record -> record.get("name").asString()).

    También puede ser necesario eliminar el finalizador, ya que devuelve un Multi<void> que no coincide con el tipo de retorno de hello().

Comments are closed.