Я не могу получить последний идентификатор вставки с помощью JdbcTemplate с использованием Spring Framework, перед использованием функции last_insert_id() я искал много других способов, но не работает с Это. Кстати, моя таблица имеетDerby - LAST_INSERT_ID() не работает с JDBC
private static final String insertResponse =
"INSERT INTO response (" +
" idReceiver) " +
"VALUES (?)";
public static void saveResponse(Response response, User user) {
dataSource = getDataSource();
JdbcTemplate template = new JdbcTemplate(dataSource);
//"select id from users where username ='"+ user.getUsername +"'";
// define query arguments
Object[] params = new Object[] { 1 };
int[] responseTypes = new int[] { Types.INTEGER };
int row = template.update(insertResponse, params, responseTypes);
if (row >0){
SqlRowSet rowSet = template.queryForRowSet("SELECT LAST_INSERT_ID() AS id");
int lastInsertedID=0;
if (rowSet.next())
lastInsertedID = rowSet.findColumn("id");
System.out.println("last insert row is : "+lastInsertedID);
}
Моей таблицы ответы было создать с помощью этой команды:
CREATE TABLE RESPONSE (
ID INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY
(START WITH 1, INCREMENT BY 1),
idReceiver INT NOT NULL
);
Когда я запускаю этот код моей JVM говорит: «Эй, парень, у вас есть это исключение: орг .springframework.jdbc.BadSqlGrammarException: StatementCallback; плохая грамматика SQL [SELECT LAST_INSERT_ID() AS id]; вложенное исключение - java.sql.SQLSyntaxErrorException: Синтаксическая ошибка: встречается «" в строке 1, столбец 29. "
Если выполнить этот запрос непосредственно на ядро базы данных, у вас есть правильный результат, не так ли? – Hackerman
Просто догадайтесь: можете ли вы попробовать с помощью 'SELECT LAST_INSERT_ID() в качестве идентификатора из double'? – Insac
@Hakerman он дает мне то же самое "Синтаксическая ошибка: встречается" "в строке 1, столбец 29." –