JdbcTemplate
Spring のクラスを使用して、という名前の MySQL テーブルに行を挿入しtransaction
、生成された ID を取得しようとしています。関連するコードは次のとおりです。
public Transaction insertTransaction(final Transaction tran) {
// Will hold the ID of the row created by the insert
KeyHolder keyHolder = new GeneratedKeyHolder();
getJdbcTemplate().update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(INSERT_TRAN_SQL);
ps.setString(1, tran.getTransactionType().toString());
Date sqlDate = new Date(tran.getDate().getTime());
ps.setDate(2, sqlDate);
ps.setString(3, tran.getDescription());
return ps;
}
}, keyHolder);
tran.setId(keyHolder.getKey().longValue());
return tran;
}
しかし、次の例外はへの呼び出しによってスローされますgetJdbcTemplate().update
java.sql.SQLException: 生成されたキーが要求されていません。Statement.executeUpdate() または Connection.prepareStatement() に Statement.RETURN_GENERATED_KEYS を指定する必要があります。
行を挿入して、生成された ID を放棄せずに取得できますJdbcTemplate
か? Spring 2.5、MySQL 5.5.27、および MySQL Connector 5.1.26 を使用しています。