休眠会话-如何使用原始SQL插入并获取生成的ID?

qxlab

使用休眠会话和MySQL,是否可以在同一事务内通过原始SQL在数据库中插入一行,然后获取生成的ID(避免并发问题)?

桌子:

CREATE TABLE EMPLOYEE (ID int(11) NOT NULL, NAME varchar(50) NOT NULL, PRIMARY KEY (ID));

我今天在做什么:

getSession().createSQLQuery("INSERT INTO EMPLOYEE (NAME) VALUES ('JOHN')").executeUpdate();

谢谢

路加

应该可以使用LAST_INSERT_ID(); 它是按连接确定的,因此,只要您在插入后立即调用它,就不会出现争用情况。

生成的ID会在每个连接的基础上保留在服务器中。这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。即使其他客户端生成自己的AUTO_INCREMENT值,该值也不会受到其他客户端的影响。此行为可确保每个客户端都可以检索自己的ID,而不必担心其他客户端的活动,也不需要锁或事务。

资源

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章