getHibernateTemplate.save() - 如何获取受影响的行/新的自动增量

Posted

技术标签:

【中文标题】getHibernateTemplate.save() - 如何获取受影响的行/新的自动增量【英文标题】:getHibernateTemplate.save() - How get Affected rows / New Auto increment 【发布时间】:2011-02-01 06:36:22 【问题描述】:

有没有办法让我通过以下方式取回受影响的行数:

getHibernateTemplate().save(bean);

如果你不知道最后发生了什么,使用保存有什么意义。 或者,如果我插入一个新行,我想获取创建的新 PK AI....

有什么想法吗?

感谢

【问题讨论】:

【参考方案1】:

有没有办法让我通过以下方式取回受影响的行数:

不用于“保存”操作,这是可以理解的。但如果您使用的是QueryexecuteUpdate 方法会返回受影响的记录数。

如果你不知道最后发生了什么,使用保存有什么意义。

好吧,如果没有例外,您可以假设一切都按预期进行。

或者,如果我插入一个新行,我想获取新创建的 PK AI....

Hibernate 使用生成的 PK 更新持久化 bean。所以,如果你的 bean 有一个long id,设置为自动增量,Hibernate 将在它被持久化后填充这个字段。

【讨论】:

如果我理解正确,我不应该使用 getHibernateTemplate,因为它无法让你知道你的请求是怎么回事。

以上是关于getHibernateTemplate.save() - 如何获取受影响的行/新的自动增量的主要内容,如果未能解决你的问题,请参考以下文章

getHibernateTemplate().save(t)执行不成功,数据不能插入到数据库

添加了Spring声明式事务 然后hibernate多次调用save(),却只保存了最后一条记录到数据库,请高手指点

HibernateDaoSupport中的操作数据的方法

求对hibernate源码了解的大神!关于hibernate4及以上版本---不配置事务,dao类继承自HibernateDaoSupport

spring2.5+hibernate3.2+struts2.0插入数据时调用两次sql语句