DB2 возвращает ключи во вставке не работает
У меня проблема при возврате сгенерированных ключей при вставке строки с jdbc в базу данных DB2 (версия 10.1). Я пробовал несколько способов сделать это, но никто не работает нормально.
Способ 1:
stmt = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
При выполнении этой строки я получаю это исключение:
com.ibm.db2.jcc.am.SqlSyntaxErrorException: НЕЗАКОННЫЙ СИМВОЛ "". НЕКОТОРЫЕ СИМВОЛЫ, КОТОРЫЕ МОГУТ БЫТЬ ЮРИДИЧЕСКИМИ. SQLCODE=-104, SQLSTATE=42601, DRIVER=3,61,75
Способ 2:
stmt = con.prepareStatement(query, pkMapper.getPkFieldNames());
List<Object> params = getInsertParams(object, pkMapper);
for (int i = 0; i < params.size(); i++) {
Object param = params.get(i);
stmt.setObject(i+1, param);
}
pkMapper.getPkFieldNames()
возвращает массив строк с именами столбцов PK. При выполнении stmt.setObject(i+1, param);
Я получаю исключение, как это:
com.ibm.db2.jcc.am.SqlSyntaxErrorException: НЕЗАКОННЫЙ СИМВОЛ "". НЕКОТОРЫЕ СИМВОЛЫ, КОТОРЫЕ МОГУТ БЫТЬ ЮРИДИЧЕСКИМИ. SQLCODE=-104, SQLSTATE=42601, DRIVER=3,61,75
Способ 3:
stmt = con.prepareStatement(query);
В этой форме вставка выполняется нормально, но ключи не возвращаются с stmt.getGeneratedKeys();
Кто-нибудь имеет представление о том, что происходит?