【问题标题】:quarkus mutiny: neo4j type mismatch compilation handlingquarkus mutiny:neo4j 类型不匹配编译处理
【发布时间】:2022-01-02 09:40:26
【问题描述】:

这是我的代码:

@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());
        });
    }

}

我收到这两条编译消息:

Type mismatch: cannot convert from Multi<Object> to Uni<String>
Type mismatch: cannot convert from Multi<Object> to Uni<Void>

我不太清楚,因为record.get("name").asString 给我返回了String...

有什么想法吗?

【问题讨论】:

    标签: neo4j quarkus mutiny


    【解决方案1】:

    终结器函数必须返回Uni&lt;Void&gt;。在您的代码中,它返回一个Publisher&lt;Object&gt;。此外,您的方法将返回 Multi 而不是 Uni

    尝试以下方法:

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public Multi<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 Uni.createFrom().publisher(session.close());
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多