分享

The database returned no natively generated identity value

 sun317 2013-11-11

database returned no natively generated 分类:Hibernatehbm.xml中的配置如下:

<id name="logId" type="integer" column="LOGID">
   <generator class="native"/>
</id>


native的功能是:

由数据库从identity,sequence和hilo中选取一个生成器来生成ID。

这样就需要主键设置成自增长的,一定要小心

采用的是Mysql5数据库,但在执行插入的时候报错:

The database returned no natively generated identity value

最后确认原因是数据库的表结构中关于logid,没有设置auto increment。


正确的建库如下:

CREATE TABLE `log` (                        
          `LOGID` int(11) NOT NULL auto_increment,  
          `LOGUSER` varchar(10) default NULL,       
          `LOGTIME` datetime default NULL,          
          `LOGTYPE` char(1) default NULL,           
          PRIMARY KEY  (`LOGID`)                    
        ) ENGINE=InnoDB DEFAULT CHARSET=gbk

完整的hbm.xml如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate./hibernate-mapping-3.0.dtd">
<hibernate-mapping 
 package="com.shinyv.dao.hibernate.test">

 <class name="Log" table="log" proxy="Log" dynamic-insert="true" dynamic-update="true">
  <id name="logId" type="integer" column="LOGID">
   <generator class="native"/>
  </id>
  <property name="logTime" column="LOGTIME" not-null="true"/>
  <property name="userName" type="string" column="LOGUSER"/>
  <property name="logType" column="LOGTYPE"/>
 </class>
 
</hibernate-mapping>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多