Почему getGeneratedKeys () возвращает «GENERATED_KEY» в качестве имени столбца?

Я играю с JDBC / MySQL 5.1. Я создал запрос insert для вставки некоторых данных в таблицу и хочу вернуть сгенерированный ключ из вновь созданной строки. Однако, когда я перехожу к ссылке на столбец по «id», который является моим PK и столбцом с автоприращением.

PreparedStatement ps = St0rm.getInstance().getDatabase("main")
        .prepare("INSERT INTO quests (name,minlevel,start_npc,end_npc) VALUES(?,?,?,?)", true); // creates a prepared statement with flag RETURN_GENERATED_KEYS

// ...

int affected = ps.executeUpdate();
ResultSet keys = ps.getGeneratedKeys();
if (affected > 0 && keys.next()) {
   St0rm.getInstance().getLogger().warning(String.format("ID Column Name: %s", keys.getMetaData().getColumnName(1))); // says the column name is: GENERATED_KEY

   q = new Quest(keys.getInt(1)); // column index from the generated key, no error thrown.

   q = new Quest(keys.getInt("id")); // actual column name, line throws a SQLException
   // ...
}

Итак, мой вопрос: Почему ResultSet.getGeneratedKeys использует GENERATED_KEY в качестве имени столбца?

6
задан Zack 15 January 2012 в 04:26
поделиться