精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-10
java_user 写道 yingjun055 写道 Technoboy 写道 可以自己写一个id的生成,其大致的策略为,先缓存一定数量的Id。
我们会有多个环境操作一个数据,这样,如果多个环境对同一个ID进行操作的话,可能会出来,ID号被改成相现的情况发生吧~~~ 不会,你只要维持同一时间只会生成一个ID就行了 防止并发的话,始终是要有个地方要排队等待的 如果性能有影响,就分段生成 你只要维持同一时间只会生成一个ID就行了 这个有什么好的想法的? |
|
返回顶楼 | |
发表时间: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()也就对了。 |
|
返回顶楼 | |
发表时间: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,就得用个触发器,所在在这个地方,全局和私有的地方出现了点问题 |
|
返回顶楼 | |
发表时间:2011-11-11
你直接配oracle序列就OK了,
save 进去那个对象的ID 肯定就是数据库中的ID 不需要做特别操作 |
|
返回顶楼 | |
发表时间:2011-11-11
闲的蛋疼 从两年前的代码中粘出来一段
@Id @SequenceGenerator(name="user_seq", sequenceName="库名.序列名") @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="user_seq") public long getId() { return super.getId(); } |
|
返回顶楼 | |
发表时间: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? |
|
返回顶楼 | |
发表时间:2011-11-11
兼容 mysql oracle?
这点真心不理解什么意思 |
|
返回顶楼 | |
发表时间:2011-11-14
c_mingze@163.com 写道 兼容 mysql oracle?
这点真心不理解什么意思 就是当你,将数据库从mysql换成oracle或,再换成sqlserver 后,数据库的相当代码都不用变化,就是序列对这个三个数据库都能兼容 |
|
返回顶楼 | |