论坛首页 Java企业应用论坛

hibernate映射oracle自动增长序列

浏览 6480 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-10  
java_user 写道
yingjun055 写道
Technoboy 写道
可以自己写一个id的生成,其大致的策略为,先缓存一定数量的Id。

我们会有多个环境操作一个数据,这样,如果多个环境对同一个ID进行操作的话,可能会出来,ID号被改成相现的情况发生吧~~~

不会,你只要维持同一时间只会生成一个ID就行了
防止并发的话,始终是要有个地方要排队等待的
如果性能有影响,就分段生成

你只要维持同一时间只会生成一个ID就行了
这个有什么好的想法的?
0 请登录后投票
   发表时间:2011-11-10  
yingjun055 写道
在oracle里面新建了一个HIBERNATE_SEQUENCE做为一个全局的sequence,给N个表用。
又建了一个a_sequence给A表特别用,同时添加触发器
每当对A表save一条记录后。就从a_sequence中取一个id.

但是出现了这样的问题:
我save完后能看到A表中的id值是a_sequence中的值
可是我立马去取这个刚刚存进去的记录时,想getid()出来的却是HIBERNATE_SEQUENCE里面的值

如何解决这个问题。使我能立马去取这个刚刚存进去的记录时,想getid()出来的就是我表中的ID值,一个正确的值

hibernate配置错误吧。本来就可以指定SEQUENCE的名字,你为什么还要去使用触发器?
你把A表的配置修改为ID使用a_sequence就行了,什么都不用做,getid()也就对了。
0 请登录后投票
   发表时间:2011-11-10  
hhhhkkkk 写道
yingjun055 写道
在oracle里面新建了一个HIBERNATE_SEQUENCE做为一个全局的sequence,给N个表用。
又建了一个a_sequence给A表特别用,同时添加触发器
每当对A表save一条记录后。就从a_sequence中取一个id.

但是出现了这样的问题:
我save完后能看到A表中的id值是a_sequence中的值
可是我立马去取这个刚刚存进去的记录时,想getid()出来的却是HIBERNATE_SEQUENCE里面的值

如何解决这个问题。使我能立马去取这个刚刚存进去的记录时,想getid()出来的就是我表中的ID值,一个正确的值

hibernate配置错误吧。本来就可以指定SEQUENCE的名字,你为什么还要去使用触发器?
你把A表的配置修改为ID使用a_sequence就行了,什么都不用做,getid()也就对了。

哦~~不是,因为,由于很多表都要用到序序列,所以在架构上面,设了一个hibernate_sequences,一个全局的,因为有个地方数据量变化太大了,用这个全局的,不太合适,所以想自建一个sequences,又要通用mysql ,oracle,sqlserver,所以用了native,就得用个触发器,所在在这个地方,全局和私有的地方出现了点问题
0 请登录后投票
   发表时间:2011-11-11  
你直接配oracle序列就OK了,
save 进去那个对象的ID 肯定就是数据库中的ID
不需要做特别操作
0 请登录后投票
   发表时间:2011-11-11  
闲的蛋疼 从两年前的代码中粘出来一段
@Id
@SequenceGenerator(name="user_seq", sequenceName="库名.序列名")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="user_seq")  
public long getId() {
return super.getId();
}
0 请登录后投票
   发表时间:2011-11-11  
c_mingze@163.com 写道
闲的蛋疼 从两年前的代码中粘出来一段
@Id
@SequenceGenerator(name="user_seq", sequenceName="库名.序列名")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="user_seq")  
public long getId() {
return super.getId();
}

这样能兼容 mysql oracle?
0 请登录后投票
   发表时间:2011-11-11  
兼容 mysql oracle?

这点真心不理解什么意思
0 请登录后投票
   发表时间:2011-11-14  
c_mingze@163.com 写道
兼容 mysql oracle?

这点真心不理解什么意思



就是当你,将数据库从mysql换成oracle或,再换成sqlserver 后,数据库的相当代码都不用变化,就是序列对这个三个数据库都能兼容
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics