Hibernate主键生成native,identity不可用,increment可以

   公司开发基本上不用写Hibernate批注,因为公司有引以为自豪的实体类生成工具!
    但是基本上要改动一下批注!默认情况下每个实体类的主键生成策略是assigned.

   大家都知道assigned 就是由数据库外部程序指定的方式!
    但是我们大多开发都是喜欢自动生成,自动生成必然首选native啦!应为这个方式可以让你的程序数据库移植性变的更强!
    但是试了试不可以,出错了!我想identity总可以吧(应为我们的数据库用的是mysql)。实质上也是不可以的,但是当我改成Increment的时候!居然可以啊!
    都是自增长区别咋就那么大呢?
   
    仔细查看了一下Hibernate代码,哎,利用上班时间研究东西就是爽啊,呵呵!
    发现实质上native,identity是没错的,但是因为我们公司的开发方式是才让这种错误产生!
    公司的开发是用pd生成数据库sql,然后利用公司程序导出相应的实体类!
    (实体类会把你建表的一整套东西都搞定的,呵呵!)
    这样的话其实数据库里面你没有规定他的增长方式,so....native.identity是无效的。当然,正常开发的时候我们是根据实体类生成表!这样就是有用的了!
    而increment之所以有用就是因为,他是Hibernate维护的一个计时器!也算是程序加入主键的一种方式把。
   

你可能感兴趣的:(sql,Hibernate,mysql)