您的位置:首页 > 数据库 > MySQL

database returned no natively generated向mysql数据库插入数据时的错误

2009-09-05 17:20 579 查看
<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.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="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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: