Я использую iBatis/Java и Postgres 8.3.
Когда я делаю вставку в ibatis, мне нужно вернуть id.
Я использую следующую таблицу для описания моего вопроса: CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) );
Последовательность sometable_id_seq
получает автогенерирование, запустив инструкцию create.
В настоящее время я использую следующую карту sql:
<insert id="insertValue" parameterClass="string" >
INSERT INTO sometable ( somefield ) VALUES ( #value# );
<selectKey keyProperty="id" resultClass="int">
SELECT last_value AS id FROM sometable_id_seq
</selectKey>
</insert>
Кажется, это способ ibatis восстановить вновь вставленный идентификатор. Ibatis сначала запускает оператор INSERT, а затем запрашивает последовательность для последнего id.
У меня есть сомнения, что это будет работать со многими параллельными вставками. (обсуждался в этом вопросе)
Я хотел бы использовать следующую инструкцию с помощью ibatis: INSERT INTO sometable ( somefield ) VALUES ( #value# ) RETURNING id;
Но когда я пытаюсь использовать его в <insert>
sqlMap, ibatis не возвращает идентификатор. Кажется, что требуется тег <selectKey>
.
Итак, возникает вопрос:
Как я могу использовать вышеуказанное утверждение с помощью ibatis?