首页 > 解决方案 > 更新查询后获取结果

问题描述

我正在进行以下查询,该查询可以正常工作并将信息按预期更新到数据库中。但是有没有办法从 Single < UpdateResult > 获得输出?

public Single<UpdateResult> update(UpdateEventRequest request) {
    return client.rxUpdateWithParams(
            "UPDATE mydb.sample SET sta_cd=?, some_ts=current_timestamp WHERE id=? RETURNING sta_cd",
            new JsonArray(Arrays.asList(sta_cd, id)));
}

从下面的 e 变量中,我希望得到值“10012”。但这似乎不可能。尝试使用地图、平面地图,只需查看 e 中可用的选项。e中唯一的结果数据是'keys',它是一个空列表和'updated',它是一个整数值1。我的数据库是postgres,并且期待来自Single <UpdateResult>的结果,因为我在查询中使用'RETURNING' .

我对插入操作做了同样的事情,但它是通过方法 rxQueryWithParams() 并返回一个 Single < ResultSet > 。因此想知道这是否可能。一直在查看文档,也许这是不可能的,因为更新查询返回 Single < UpdateResult > 。如果可能,请寻求建议,从更新查询中返回数据或解决此问题。请指教。谢谢。

    Single<UpdateResult> result = someClass.update("10012", "78632");

    result.subscribe(
            e -> {
                System.out.println("success: " + e); // I land here as expected
            },
            error -> {
                System.out.println("error: " + error);
            }
    );

标签: javapostgresqlrx-java

解决方案


因为您RETURNING在这些命令中使用,所以将这些INSERTUPDATE命令视为查询。

运行它们,rxQueryWithParams()以便您可以检索结果。

运行rxUpdateWithParams()时,UpdateResult仅包含受影响的行数。


推荐阅读