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