Hibernateで、MySQLで最後にinsertで生成されたIDを取得する方法を調べてみた。
MySQLで直前にINSERTしたレコードのIDを取得
MySQLで直前にINSERTしたレコードのIDを取得するには、MAX()で取得することもできますが、LAST_INSERT_ID()を使うと簡単です。
1 |
SELECT LAST_INSERT_ID(); |
FROM句は不要です。
LAST_INSERT_ID()は関数名の通り、最後にINSERTされたIDを取得するためのものです。
この関数で取得できるのはAUTO_INCREMENTの値だけです。
Hibernateで最後にINSERTされたIDの取得
それでは、Hibernateで上記のMySQLの構文を使ってみましょう。
詳細はいかにも書かれていました。
How can I get last inserted id using Hibernate
・https://stackoverflow.com/questions/21829023/how-can-i-get-last-inserted-id-using-hibernate
1 2 3 |
import java.math.BigInteger; Long lastId = ((BigInteger) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue(); |
mysql_insert_id() と last_insert_id() の違い
mysql_insert_id() と last_insert_id() は異なる。
両者の違いは以下の通りです。
・https://dev.mysql.com/doc/refman/5.6/ja/mysql-insert-id.html
コメント