database returned no natively generated 分类:Hibernatehbm.xml中的配置如下: <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./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>
|