更新查询后获取结果

时间:2020-07-19 10:48:02

标签: java postgresql rx-java

我正在执行以下查询,该查询可以正常工作并将信息更新到数据库中。但是有办法我可以从Single 获取输出吗?

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,由于在查询中使用“ RETURNING”,因此期望从Single 获得结果

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

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

1 个答案:

答案 0 :(得分:2)

由于在这些命令中使用了RETURNING,因此将这些INSERTUPDATE命令视为查询。

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

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