mysql数据库,表的主键id是int型的,非自增的,
 hibernate的标识生成器有适合这种情况的吗,不能用increment,因为不是自增的

解决方案 »

  1.   

    UUID 也可以实现:
    Java代码 
    @GeneratedValue(generator = "system-uuid")   
    @GenericGenerator(name = "system-uuid", strategy = "uuid")   @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")这样子去定义你的UUID 
    hbm配置文件中呢就是这样去定义你的UUID 
      

  2.   

    楼主记错了
    Increment 适合所有的数据库
    由Hibernate本身维护,适用于所有的数据库。
    他是这么实现的:(select max(id) from tab) + 1 ---当然ID要是int的
    所以 Increment 适合所有数据库
      

  3.   

    Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式 
    特点:根据不同的底层数据库采用不同的主键生成方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。
    --------------------------------------------------------
    所以Native 就是identity、hilo、sequence 中的一种------------------------------------------------------
    identity 要求id可以自增
      

  4.   

    主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式 
    所以Native 实质就是Identity、Sequence、Hilo 中的一种
    -------------------------------------------------
    Identity 要求id可以自增