1>创建一个Oracle序列:
2>在实体中引用:
现在同一个Entity实体的,另一个非主键字段也需要使用序列来设置值。后来自己发现:不能在同一个Entity中,通过@GeneratedValue和@SequenceGenerator标签使用多个Oracle序列。
使用SpringDataJPA的原生sql语句查询序列的下一个值。然后在service层调用此方法获取下一个序列值,手动设置到Entiry的非主键字段上去。
参考文章:
1.How do you get a Oracle Sequence value with JPA?
2.SpringDataJPA原生sql语句执行
根据我自己的经验,oracle的序列是不认自己填写的数字的,所以想要这么 *** 作只能先删除序列才可以。如果是修改的话,要删除序列才能修改,也就是数艘要分三步 *** 作
(1)删除序列(把语句复制下来),可是也要复制触发器的语句(当然重新编译一下触发器也可以,这样会让触发器无效)
(2)修改序号(至于你说的修改为指定区间,这个简单,比如你要把1-20,改为50001-50020,那么就是id+50000即可,只要where中限定范围就可以了。)
(3)重建序列,并重新设定起始值(至少设定为新的最大值+1),别忘了相关触发器
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)