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();

Кто-нибудь имеет представление о том, что происходит?

0 ответов

Другие вопросы по тегам