Hibernate-database returned no natively generated

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

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

 

native的功能是:

數據庫從identity,sequence和hilo中選取一個生成器來生成ID。

這樣就需要主鍵設置成自增長的,一定要小心

 

採用的是Mysql5數據庫,但在執行插入的時候報錯:

The database returned no natively generated identity value

 

最後確認原因是數據庫的表結構中關於ID,沒有設置auto increment。

正確的建庫如下:

CREATE TABLE `log` (                       
          `ID` 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.sourceforge.net/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="id" type="integer" column="ID">
   <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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章