native
increment
identity
sequence
都可以吧,推荐native

解决方案 »

  1.   

    assigned比较好,可以灵活控制
      

  2.   

    assigned特点; 1.主键的生成值完全又用户决定,与底层数据库无关
                  2.用户需要维护主键值
                  3.在调用session.save()前要指定主键值increment特点:1.由Hibernate本身维护,适合用于所有数据库
                   2.不适合多进程并发更新数据库,适合单一进程访问数据库。
                     不能用于群集环境
    identity特点:1.与底层数据库有关,要求数据库支持Identity,如MySQL中是auto_increment,
                    Sql Server中是Identity。支持的数据库有MySQL、SQL Server、DB2、Sybase
                    和HypersonicSql。
                  2.无需Hibernate和用户的干涉,使用比较方便,但不便于在不同的数据库之  
                    间移植。
    sequence 特点:1.需要底层数据库的支持序列,支持序列的数据库有DB2、PostgteSQL、Oracle
                     、SAPDB   
                   2.在不同的数据库之间移植程序,特别从支持序列的数据库移植到不支持序列
                     的数据库是需要修改配置文件。
    Native 特点:1.根据不同的底层数据库,采用不同的主键生成方式.如MySQL使用Identity方
                   式,Oracle使用Sequence 方式
                 2.由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植。
                 3.项目中如果用的多个数据库时,可以使用 Native方式。
      

  3.   

    这个问题可能是,你建表的时候,已经设置了主键,而且在Hibernate中也要配置主键生成策略,所以在数据库表中的identity这个标识列应该不要写,否则向数据库中增加记录时会报错的。
      

  4.   

    在hibernate 类里,设置的属性的类型应该为对应的封装类
      

  5.   

    欢迎JavaEE高手进入 
    QQ群 5294054