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)。 展开
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)。 展开
2个回答
展开全部
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>
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>
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
oracle hibernate ID 序列 自增长 问题, 基于注解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询