hibernate database returned no natively generated

來源:互聯網
上載者:User

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

 

查看資料庫中該欄位是否應該設為自增長,若應該,設為自增長;若不是,則刪除  <generator class="native"/>

最後確認原因是資料庫的表結構中關於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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.