日期:2014-05-20  浏览次数:20979 次

hibernate hql 获得插入数据自动增长序列号
在hibernate 中插入一条数据  
  有没有一个函数可以获得插入数据自动增长序列号的????

------解决方案--------------------
插入数据会返回ID的
------解决方案--------------------
探讨
插入数据会返回ID的

------解决方案--------------------
Hibernate设置了主键的生成方式,如果你使用了increment,即自增长,每次hibernate会自动加1.而且为了提高效率它会缓存下一个ID的值,比如当前ID是10,那么下一个就是11了,此时你手动向数据库里增加一条ID为11的记录后,再用hibernate加一条记录,马上会报错,主键重复,这就是因为hibernate缓存了下一个ID,有时候删除也会出错。
------解决方案--------------------
探讨
引用:
插入数据会返回ID的

正确,插入之后,序号就已经背回填了

------解决方案--------------------
探讨
插入数据会返回ID的//正确

------解决方案--------------------
像这种自动增长的ID在数据库中一般是通过序列来实现的。
写一个存储过程专门访问那个序列得到下一个序列号。
这样程序每次调用那个存储过程得到下一个ID
------解决方案--------------------
探讨
插入数据会返回ID的

------解决方案--------------------
探讨
Hibernate设置了主键的生成方式,如果你使用了increment,即自增长,每次hibernate会自动加1.而且为了提高效率它会缓存下一个ID的值,比如当前ID是10,那么下一个就是11了,此时你手动向数据库里增加一条ID为11的记录后,再用hibernate加一条记录,马上会报错,主键重复,这就是因为hibernate缓存了下一个ID,有时候删除也会出错。

------解决方案--------------------
对象被保存后,id已经被回填到对象中了
------解决方案--------------------
自动增长要分情况而定。不同的数据库,有着不同的方法。有人说,用了序列。其实序列是oracle有的方式。mysql可以自己增加。还有不管什么数据库都可以用的自动增加的配置方法(其是根据数据库方言来自动选择的),你可以看看资料