一尘不染

使用Oracle序列时,Hibernate不会生成标识符

hibernate

我有以下映射

@Entity
@SequenceGenerator(name="sacpSequenceGenerator", sequenceName="SACP_SEQ")
public class Sacp {

    private Integer id;


    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sacpSequenceGenerator")
    public Integer getId() {
        return this.id;
    }

    // other setter's and getter's
}

SACP表根据

ID NUT NULL NUMBER(4)

当我尝试保存Sacp实例时,Hibernate抱怨

ORA-01438:此列允许的值大于指定的精度

即使使用Long而不是Integer,也会引发相同的错误

我该怎么解决?


阅读 200

收藏
2020-06-20

共1个答案

一尘不染

我发现了这个

SEQ_GEN使用名为my_sequence的序列定义序列生成器。此基于序列的hilo算法使用的分配大小为20。请注意,此版本的Hibernate
Annotations不处理序列生成器中的initialValue。默认分配大小是50,因此,如果要使用序列并每次都取值,则必须将分配大小设置为1。

现在工作正常

2020-06-20