0

mysql データベースに行を挿入するために spring jdbctemplate を使用しています。mysql データベースにバッチ挿入を実行しているときに問題に直面しています。問題は、2 番目の行を挿入するときに、主キーで重複キー違反が発生することです。バッチ更新メソッド内に USER_KEY を配置しましたがDuplicate entry '1' for key 'PRIMARY'、2 行目の挿入中に例外が発生しています。

私のメソッドには注釈が付けられていません@Transactional

注:-コードを使用して主キーを生成する必要があり、これを更新/削除アクションに使用する必要があるため、auto_increment に依存しません。さらに、jdbctemplate バッチ挿入は生成されたキーを返しません。

ここに私のコードがあります

    private static final String USER_KEY = "SELECT LAST_INSERT_ID() FROM USER";


jd.batchUpdate(INSERT_QUERY,
                    new BatchPreparedStatementSetter() {

                        @Override
                        public void setValues(PreparedStatement ps, int count)
                                throws SQLException {
                             Long userId= jd.queryForObject(
                                        USER_KEY, Long.class);
                            UserDO Userdo = userlst
                                    .get(count);
                            ps.setLong(1, userId+1);
                            ps.setString(2, Userdo .getFirstName());
                            ps.setString(3, Userdo .getLastName());
                            ps.setString(4, Userdo .getMobile());
                            ps.setString(5, Userdo .getEmail());
                            ps.setInt(6, 0);
                        }

                        @Override
                        public int getBatchSize() {
                            return UserdoLst.size();
                        }
                    }); 

貴重なご回答ありがとうございます。ありがとう

4

1 に答える 1