Hibernate的id生成机制

下午学习的过程中遇到一个问题 很纠结……

代码写的没有错 也能运行就是插不到数据库里去,找了很多方法都不行!!最后发现

<id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" /><!-- 这里比较奇怪啊 如果使用increment就不能插入数据 而使用了identity就可以???????????????? -->
        </id>

 

 

 基于XML配置
<id name="id" type="java.lang.Integer">
            <column name="ID" precision="8" scale="0" />
            <generator class="native" />
  </id>

常见的generator:
increment:用于long、short、int类型唯一标识,只有在没有其他进程往同一张表中插入数据时才能使用,在集群下不能使用

identity:采用数据库提供的主键生成机制。如DB2、SQL   Server、MySQL   中的主键生成机制。 

sequence:采用数据库提供的sequence机制生成主键。如 Oralce 中的Sequence。 

native: 由Hibernate  根据使用的数据库自行判断采用identity、hilo、sequence 其中一种作为主键生成方式。跨数据库平台!

hilo:通过hi/lo   算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源

uuid.string:与uuid.hex类似,只是生成的主键未进行编码(长度16),不能应用在   PostgreSQL数据库中。 (要求主键是String类型)

posted on 2011-08-03 21:02  h2内存数据库  阅读(956)  评论(0编辑  收藏  举报

导航