oracle hibernate ID 序列 自增长 问题, 基于注解

有个项目,所有的子ENTITY都继承一个基类IdEntity来完成ID的自增长publicabstractclassIdEntity@Id@SequenceGenerat... 有个项目, 所有的子ENTITY 都继承一个 基类 IdEntity 来完成 ID 的自增长
public abstract class IdEntity
@Id
@SequenceGenerator(name="seq", sequenceName="S_AUTOID")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="seq")
public Long getId() {
return id;
}
但是数据量过大, 一个序列S_AUTOID 明显已经不够用了, 想为某些子ENTITY再生成另一个S_AUTOID2
由于项目设定 所以子ENTITY 都必须继承 IdEntity 于是 我就在用使用S_AUTOID2序列的子类覆盖getId方法,如
public class Usergroup extends IdEntity
@SequenceGenerator(name="seq2", sequenceName="S_AUTOID2")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="seq2")
public Long getId() {
return id;
}
但是会报错
问题 基于注解的方式 如何配置多个序列来实现数据库自增长(必须 都继承一个 基类 IdEntity)。
展开
 我来答
LP1984shy
推荐于2016-10-26 · TA获得超过284个赞
知道答主
回答量:41
采纳率:100%
帮助的人:11.9万
展开全部
1、先创建序列:
CREATE SEQUENCE myseq--创建序列,名为:myseq
STARTWITH 1 --从1开始
MAXVALUE999999999 --最大值
INCREMENT BY 1 --每次递增 1
ORDER--排序
NOCYCLE;--避免重新开始,关闭循环
2、hibernate 配置
2.1、hibernate 注释配置
2privateIntegerid;

3@Id
4@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="myseq_test")
5@SequenceGenerator(name="myseq_test",sequenceName="myseq",allocationSize=1)
6publicIntegergetId(){
7returnid;
8}
9publicvoidsetId(Integerid){
10this.id=id;
11}
注:其中myseq为序列名称,myseq_test 为myseq别名。allocationSize要注意:我参考官方文档配置,但是官方文档没有配置这个属性,导致我的序列默认不是按照1递增的,

加上就可以了。
2.2、hibernatexml配置,在你的hbm.xml中配置
2<idcolumn="ID"name="id"type="integer">

3<generatorclass="sequence">
4<paramname="sequence">seq_id</param>
5</generator>
6</id>
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
marine17300
2012-07-27 · TA获得超过109个赞
知道答主
回答量:53
采纳率:0%
帮助的人:39.4万
展开全部
oracle hibernate ID 序列 自增长 问题, 基于注解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式