主键在oracle中是varchar2类型的,要实现递增功能,写了一个sequence,
在主键上加如下注释会出现类型转换错误,String 不能转换成Number
         @Id 
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="LI-GEN")
@SequenceGenerator(name="LI-GEN",sequenceName="LI_SEQ",allocationSize=1)
@Column(name = "ID", unique = true, nullable = false, length = 8)
请问这种情况怎么解决,当然不是在数据库中把主键换成Number类型,或者用varchar2的话怎么实现递增功能呢。

解决方案 »

  1.   

    可以创建一个序列
    <id name="mgrId" column="主键值名" type="long" length="10">
    <generator class="sequence">
    <param name="sequence">序列ID名</param>
    </generator>
    </id>   
    或者你自己在保存的时候 查找序列!后者并发的问题比较大不推荐!
      

  2.   

    你还是没明白我的意思,我上面列的注释是正确的,对数据库中number类型的没有错误,能得到正确的结果,换成vchar2就会出现类型转换错误