![](/img/trans.png)
[英]How to find out efficiently the auto-generated id for a new object when using JPA?
[英]How does JPA gets auto-generated ID of persisted object?
我一直在研究JDBC和Spring JPA,讓我想到的是Spring如何獲取已保存對象的ID。 我擴展了JpaRepository:
interface UserAccountRepository
extends JpaRepository<UserAccount, Integer> {
}
並保存了我的對象:
userAccountRepository.save(new UserAccount(
null,
username,
passwordEncoder.encode(password)
));
MySQL日志顯示以下操作:
2017-04-08T12:54:52.107156Z 78查詢SET自動提交= 0
2017-04-08T12:54:52.206061Z 78查詢插入到user_account(密碼,用戶名)值('encryptedpassword','user')中
2017-04-08T12:54:52.206823Z 78查詢提交
2017-04-08T12:54:52.211045Z 78查詢SET自動提交= 1
由於插入操作不返回任何內容(或者我缺少什么?),Spring如何在沒有任何其他查詢的情況下知道該ID?
JDBC可以返回作為語句一部分生成的鍵。 這是一個例子:
try(PreparedStatement statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
setParameters(parameterValues, statement);
statement.execute();
try(ResultSet rs = statement.getGeneratedKeys()) {
if(rs.next()) {
return rs.getObject(1); // <-- contains the generated key
}
return null;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.