У меня есть метод вставки в моем проекте vert.x, написанный в стиле rxjava. В моем методе я запускаю запрос на вставку, чтобы вставить запись в MS SQL Server. Я хочу получить автоинкрементный ключ вновь вставленной записи. Как я могу получить это?
Вот мой код.
@Override public Single<Record> save(Record record) { return new AsyncResultSingle<Record>(resultHandler -> { jdbcClient.rxGetConnection() .subscribe(connection -> { String sql = "INSERT into record (ani, template_id) values (?, ?)"; JsonArray params = new JsonArray().add(record.ani).add(record.templateId); connection.rxQueryWithParams(sql, params) .doAfterTerminate(connection::close) .subscribe(resultSet -> { List<JsonObject> rows = resultSet.getRows(); //how I can get a key or Record object which has been inserted? resultHandler.handle(Future.succeededFuture()); }, onError -> { resultHandler.handle(Future.failedFuture(onError)); }); }, onError -> { resultHandler.handle(Future.failedFuture(onError)); }); }); }
После того, как я изменился
connection.rxQueryWithParams(sql, params)
до
connection.rxUpdateWithParams(sql, params)
тогда я могу получить ключ как;
JsonArray rows = resultSet.getKeys();
Спасибо @taygetos за подсказку.
Я думаю, вместо
List<JsonObject> rows = resultSet.getRows();
вы ищете
List<JsonArray> results = resultSet.getResults();
РЕДАКТИРОВАТЬ: вы уже поняли это, но чтобы исправить мой ответ здесь: вы также должны использовать rxUpdateWithParams вместо rxQueryWithParams.
rxUpdateWithParams
rxQueryWithParams