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">
<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>