Как использовать RowId, возвращенный из PreparedStatement.getGeneratedKeys()?

У меня есть код ниже. Это подготовленный оператор с запросом на возврат сгенерированных ключей.

В наборе результатов generateKeys единственный возвращаемый столбец называется «ROWID», а значение — это экземпляр класса RowId. Смотрите скрин внизу.

У меня вопрос: как использовать идентификатор строки, чтобы получить всю строку?

preparedStatement = conn.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
SqlUtils.addParams(preparedStatement, params);
preparedStatement.executeUpdate();
ResultSet generatedKeys = preparedStatement.getGeneratedKeys();

введите здесь описание изображения


person AlikElzin-kilaka    schedule 10.04.2016    source источник
comment
Вы смотрели документацию Oracle Использование объектов RowId?   -  person Buhake Sindi    schedule 11.04.2016
comment
Не отвечая напрямую на вопрос, но это может быть немного актуальным?   -  person Alex Poole    schedule 11.04.2016


Ответы (1)


После того, как я вставил данные и получил rowid, я могу использовать их для очень быстро извлечь всю строку, включая сгенерированные значения, которые были вставлены, например значения, вставленные процедурой БД.

Пример использования rowid для извлечения строки:

Object rowId = generatedKeys.getObject(1);
String tableName = generatedKeys.getMetaData().getTableName(1);
List<Map<String, Object>> resAsList = select(conn, "select * from " + tableName + " where rowid=?", rowId);
person AlikElzin-kilaka    schedule 12.04.2016