各位高手帮帮忙:
我使用postgresql+Spring+Hibernate开发,在Hibernate中mapping id的时候使用:
<id name="id" column="col_id">
    <generator class="native"/>
</id>
可是主键不能自动增长,insert的时候总是提示col_id不能为空,可是同样的配置文件在使用mysql的时候就没有这个问题。这是为什么啊?

解决方案 »

  1.   

    如果ID是自增长字段
    MYSQL 这条语句是合法的 INSERT INTO (ID,XXX) VALUES (NULL,XXX)
    但在PG是不合法的,必须改为 INSERT INTO (XXX) VALUES (XXX)
    所以在Hibernate中你的要将ID设为不可更新的(没用过,不知道能否?),以便产生以上的SQL语句。
      

  2.   

    INSERT INTO (ID,XXX) VALUES ('',XXX)
      

  3.   

    在配置hbm.xml 的时候 
      配置自动增长 为 identity 类型的    <generator class="identity"/>
      

  4.   

    <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="sequence">
           <param name="sequence">xxx_id_seq</param>
       </generator>
            </id>数据库中用serial