Sto usando iBatis/Java e Postgres 8.3. Quando faccio un inserto in ibatis ho bisogno dell'id restituito.
ho utilizzare la seguente tabella per descrivere la mia domanda:
CREATE TABLE sometable (id serial NOT NULL, somefield VARCHAR(10));
La Sequenza sometable_id_seq
ottiene generati automaticamente eseguendo l'istruzione CREATE.Come restituire id su Inserti con Ibatis (con parola chiave RETURNING)
Al momento io uso la seguente mappa 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>
Sembra questo è il modo iBATIS di recuperare l'id appena inserito. Ibatis prima esegue un'istruzione INSERT e successivamente chiede la sequenza per l'ultimo id.
Ho dubbi che questo funzionerà con molti inserti concorrenti. (discussed in this question)
mi piacerebbe utilizzare la seguente dichiarazione con ibatis:
INSERT INTO sometable (somefield) VALUES (#value#) RETURNING id;
ma quando provo ad usarlo all'interno di un ibatis <insert>
sqlMap non restituisce l'id. Sembra che sia necessario il tag <selectKey>
.
Così qui viene la domanda:
come posso utilizzare l'istruzione di cui sopra con iBATIS?
questa soluzione risolve i miei timori di concorrenza. Lascia solo la domanda se ibatis può funzionare con una sintassi INSERT INTO .. RETURING ... – Christoph