【问题标题】:Get result after an update query更新查询后获取结果
【发布时间】:2020-07-19 10:48:02
【问题描述】:

我正在进行以下查询,该查询可以正常工作并将信息按预期更新到数据库中。但是有没有办法从 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,并且期待来自Single 的结果,因为我在查询中使用'RETURNING' .

我为插入操作做了同样的事情,但它是通过方法 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);
            }
    );

【问题讨论】:

    标签: java postgresql rx-java


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2015-09-04
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多