Tôi đang sử dụng iBatis/Java và Postgres 8.3. Khi tôi làm một chèn trong ibatis tôi cần id trả lại.
Tôi sử dụng bảng sau đây để mô tả câu hỏi của tôi:
CREATE TABLE sometable (id serial NOT NULL, somefield VARCHAR(10));
Trình tự sometable_id_seq
được tự động phát bằng cách chạy câu lệnh tạo.Làm thế nào để trả về id trên Chèn với Ibatis (với từ khóa RETURNING)
Tại thời điểm tôi sử dụng bản đồ sql sau:
<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>
Có vẻ như đây là cách ibatis thu hồi id mới chèn vào. Đầu tiên, Ibatis chạy một câu lệnh INSERT và sau đó nó yêu cầu trình tự cho id cuối cùng.
Tôi nghi ngờ rằng thao tác này sẽ hoạt động với nhiều lần chèn đồng thời. (discussed in this question)
Tôi muốn sử dụng câu lệnh sau đây với ibatis:
INSERT INTO sometable (somefield) VALUES (#value#) RETURNING id;
Nhưng khi tôi cố gắng sử dụng nó trong một ibatis <insert>
sqlMap không trả lại id. Có vẻ như cần thẻ <selectKey>
.
Vì vậy, đây là câu hỏi:
Tôi có thể sử dụng câu lệnh trên với ibatis như thế nào?
giải pháp này giải quyết những lo lắng về đồng thời của tôi. Nó chỉ để lại câu hỏi nếu ibatis có thể làm việc với cú pháp INSERT INTO .. RETURING .. – Christoph