我是使用spring+hibernate +mysql的开发环境
使用annotation来配置Mysql的映射关系bean如下:@SuppressWarnings("serial")
@MappedSuperclass
public class PersistenceSupport implements Serializable {

@Id
@GeneratedValue(generator = "persistenceGenerator")     
@GenericGenerator(name = "persistenceGenerator", strategy = "hilo") 
private Long id ; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
}

}
情况为:每次重新启动tomcat,新插入记录的id就从原来正常的顺序如123456,一下子跳到从32768开始
如果再次重启tomcat,则又从32768的2倍65535开始
请问,要如何配置@GeneratedValue的生成策略,才能使id按照顺序排列下去呢?

解决方案 »

  1.   

    估计问题出在你映射id的地方了每次映射都从id的最末端开始
      

  2.   

    我曾经尝试过使用@GeneratedValue(strategy = GenerationType.TABLE)
    也是相同的情况使用@GeneratedValue(strategy = GenerationType.AUTO)
    和@GeneratedValue(strategy = GenerationType.IDENTITY)
    则报错:
    exception is org.hibernate.MappingException: Cannot use identity column key generation with <union-subclass>请高人赶快救救我吧!
      

  3.   

    因为是用annotation来映射的,就是在上面那个类里面设置的,没有那种hbm.xml文件的
    请问要怎么设置啊?
    新接触的这种技术,诚心求教详细方法
      

  4.   

    你看看父类的id类型是否是long
      

  5.   

    经过实验,用increment是可行的
    具体配置如下,希望对有相同问题的朋友有帮助@Id
    @GeneratedValue(generator = "persistenceGenerator")    
    @GenericGenerator(name = "persistenceGenerator", strategy = "increment")