oracle存储过程通过hibernate生成的数字比单独使用hibernate生成的数字大
我们有一个存储过程,它为条目id生成数字(oracle存储过程通过hibernate生成的数字比单独使用hibernate生成的数字大,oracle,hibernate,sequence-generators,Oracle,Hibernate,Sequence Generators,我们有一个存储过程,它为条目id生成数字(entry\u id\u seq)。使用下面的设置,代码生成的数字比直接使用SQL调用的数字要大 例如,下面的代码为id生成一个数字“11195215652”。但是如果我从dual运行select entry_id_seq.NEXTVAL nv,它返回的“32350910”要小得多 @javax.persistence.SequenceGenerator(name = "seq", sequenceName = "entry_id_seq") publi
entry\u id\u seq
)。使用下面的设置,代码生成的数字比直接使用SQL调用的数字要大
例如,下面的代码为id生成一个数字“11195215652”。但是如果我从dual运行select entry_id_seq.NEXTVAL nv,它返回的“32350910”要小得多
@javax.persistence.SequenceGenerator(name = "seq",
sequenceName = "entry_id_seq")
public class SomeClassimplements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
@Column(name = "ID")
private Long id;
我尝试了下面的建议
@javax.persistence.SequenceGenerator(name = "seq",
sequenceName = "entry_id_seq", allocationSize = 1, initialValue= 1)
但它给了我以下错误:
Caused by: org.hibernate.HibernateException: increment size cannot be less than 1
at org.hibernate.id.enhanced.OptimizerFactory$LegacyHiLoAlgorithmOptimizer.<init>(OptimizerFactory.java:336)
at org.hibernate.id.SequenceHiLoGenerator.configure(SequenceHiLoGenerator.java:64)
at org.hibernate.id.factory.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:110)
原因:org.hibernate.hibernateeexception:增量大小不能小于1
位于org.hibernate.id.enhanced.OptimizerFactory$LegacyHiLoAlgorithmOptimizer。(OptimizerFactory.java:336)
在org.hibernate.id.SequenceHiLoGenerator.configure(SequenceHiLoGenerator.java:64)上
位于org.hibernate.id.factory.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:110)
根据以下讨论:
解决办法是:
在SequenceGenerator注释中,添加allocationSize=1,initialValue=1
您使用的是什么版本的hibernate?如果<3.5.3,则检查此项
它似乎会影响配置了注释的allocationSize=1的旧式生成器
决议:1。配置为使用新生成器,2.升级,3.手动修补您的版本 我尝试了上面的其他参数,但得到了以下错误。原因:org.hibernate.hibernate异常:org.hibernate.id.enhanced.OptimizerFactory$LegacyHiLoAlgorithmOptimizer处的增量大小不能小于1。(OptimizerFactory.java:336)org.hibernate.id.SequenceHilGenerator.configure(SequenceHilGenerator.java:64)位于org.hibernate.id.factory.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:110)