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

时间:2009-11-13 14:57:17

标签: java oracle hibernate mapping sequence

我有以下映射

@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,也会抛出相同的错误

我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:1)

我找到了这个

  

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

现在一切正常