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();
}
});
貴重なご回答ありがとうございます。ありがとう