Spring JDBC - последний вставленный идентификатор - PullRequest
1 голос
/ 18 апреля 2011

Я использую Spring JDBC.Это простой способ получить последний вставленный идентификатор с помощью Spring Framework или мне нужно использовать некоторые трюки JDBC?

jdbcTemplate.update("insert into test (name) values(?)", params, types);
// last inserted id ...

Я нашел что-то вроде ниже, но я получаю: org.postgresql.util.PSQLException: Returning autogenerated keys is not supported.

KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {

    @Override
    public PreparedStatement createPreparedStatement(
            Connection connection) throws SQLException {
        PreparedStatement ps = connection.prepareStatement("insert into test (name) values(?)", new String[] {"id"});
        ps.setString(1, "test");
        return ps;
    }

}, keyHolder);
lastId = (Long) keyHolder.getKey();

Ответы [ 2 ]

3 голосов
/ 18 апреля 2011

Старый / стандартный способ заключается в использовании вызова currval () после вставки ( ref ). Просто и безопасно.

1 голос
/ 18 апреля 2011

Поддержка «сгенерированных ключей для PreparedStatements» запущена только начиная с версии PostgreSql 8.4-701 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...