次のテーブルとシーケンスがあります
CREATE TABLE teacher
(
teacher_id serial NOT NULL,
teacher_name character varying(50),
CONSTRAINT teacher_pkey PRIMARY KEY (teacher_id)
)
CREATE SEQUENCE teacher_teacher_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
新しいレコードを挿入するたびに主キーを取得したい。次のクエリを実行すると、機能し、必要な主キーが返されます。
INSERT INTO teacher( teacher_name ) VALUES ('John') RETURNING teacher_id;
しかし、次のように myBatis-Spring Mapper を使用すると
@Insert("INSERT INTO teacher( teacher_name ) " +
"VALUES ( #{teacherName} ) RETURNING teacher_id" )
public int insertTeacher(Teacher teacher);
有効なオブジェクトで関数を呼び出すとteacher
、値が挿入されますが、-1 が返されます。
そして、私も次のことを試しました
@Insert("INSERT INTO teacher( teacher_id, teacher_name ) " +
"VALUES ( #{teacherId}, #{teacherName} )" )
@SelectKey(statement="SELECT nextval('teacher_teacher_id_seq');", keyProperty="teacherId", before=true, resultType=int.class)
public int insertTeacher(Teacher teacher);
これは、何度呼び出しても 1 を返します
どなたか理由と解決策を教えていただけないでしょうか?前もって感謝します。