database returned no natively generated

databasereturnednonativelygenerated分类:Hibernatehbm.xml中的配置如下:

<idname="logId"type="integer"column="LOGID">

<generatorclass="native"/>

</id>

native的功能是:

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

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

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

Thedatabasereturnednonativelygeneratedidentityvalue

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

正确的建库如下:

CREATETABLE`log`(

`LOGID`int(11)NOTNULLauto_increment,

`LOGUSER`varchar(10)defaultNULL,

`LOGTIME`datetimedefaultNULL,

`LOGTYPE`char(1)defaultNULL,

PRIMARYKEY(`LOGID`)

)ENGINE=InnoDBDEFAULTCHARSET=gbk

完整的hbm.xml如下:

<?xmlversion="1.0"?>

<!DOCTYPEhibernate-mappingPUBLIC

"-//Hibernate/HibernateMappingDTD3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping

package="com.shinyv.dao.hibernate.test">

<classname="Log"table="log"proxy="Log"dynamic-insert="true"dynamic-update="true">

<idname="logId"type="integer"column="LOGID">

<generatorclass="native"/>

</id>

<propertyname="logTime"column="LOGTIME"not-null="true"/>

<propertyname="userName"type="string"column="LOGUSER"/>

<propertyname="logType"column="LOGTYPE"/>

</class>

</hibernate-mapping>

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zwhfyy/archive/2007/05/15/1610157.aspx

相关推荐