使用Oracle序列时,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,也会抛出相同的错误
我该怎么做才能解决这个问题?
我发现了这个
SEQ_GEN使用名为my_sequence的序列定义序列生成器。 用于此基于序列的hilo算法的分配大小为20.请注意,此版本的Hibernate Annotations不处理序列生成器中的initialValue。 默认分配大小为50,因此如果要使用序列并每次拾取值,则必须将分配大小设置为1。
现在它工作正常