2013-10-17 68 views
0

是否有可能檢索AUTOINC場後,我執行我插入:如何獲得自動遞增執行SQLQuery.executeUpdate後()insert語句

String queryString = "insert into " + String.format("table%04d", id) + 
       "(sectionid, topicid, dc) values (" + entry.getSectionId() + 
      ", " + entry.getTopicId() + ", " + entry.getDc() + ")"; 
SQLQuery query = session.createSQLQuery(queryString); 
query.executeUpdate(); 

表有四個字段

eid - autoinc 
sectionid - int 
topicid - int 
dc - int 

請幫助我

+1

請參閱http://stackoverflow.com/questions/621369/sql-insert-and-catch-the-id-auto-increment-value/1452145#1452145 –

+0

如果我不知道數據庫將要運行什麼成爲 – serge

回答

0

不幸的是,通過使用SQL查詢而不是HQL,您正在繞過Hibernate的大部分數據庫不可知論的好處。如果你絕對不能使用HQL,你將不得不實現自己的數據庫specfic實現。要做到這一點,首先需要從休眠獲得JDBC驅動程序類:

How to get database metadata from entity manager

一旦你有你的驅動程序類,你可以做基於該類的一個數據庫特定的查詢。既然你不能修改驅動程序類實現與特定的GET AUTOINC查詢的界面,我建議尼科的建議在以下鏈接:

switch instanceof?

一旦你實現在驅動程序類switch語句,你可以選擇是否實施MYSQL,MSSQL或其他autoinc查詢。