我想知道在春天的DuplicateKeyException之后是否有可能获得一个值的键?
例如:
try {
KeyHolder keyHolder = new GeneratedKeyHolder();
getJdbcTemplate().update(
new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement(SQL, new String[]{"ID"});
ps.setString(1, user.getUSERNAME());
ps.setString(2, user.getEMAIL());
return ps;
}
},
keyHolder);
logger.info("Insert success");
return (BigDecimal) keyHolder.getKey();
} catch (DuplicateKeyException dke) {
logger.info("Insert failed");
// get key and do sth with it
return new BigDecimal(-1);
}
欢迎任何建议。
答案 0 :(得分:0)
我没有看到解决此问题的最佳解决方案。尝试这样的事情:
SELECT COUNT(name) FROM table WHERE name='SOME_NAME'
)您可以在遇到DuplicateKeyException之前或之后执行此操作