2009-09-17 99 views
0

我嘗試執行這3個語句,1和2成功,但是當達到3語句時,我得到錯誤,是因爲我試圖在語句2中插入同一個表並導致語句3失敗?順便說一下,所有3語句是一個@spring事務內部hibernate createSQLQuery批量插入

session.createSQLQuery(" select groupid from group_ where groupid = 888880005").executeQuery;//executed ok 

session.createSQLQuery(" insert into layoutset (layoutsetid,groupid,companyid,privatelayout,logo,logoid,themeid,colorschemeid, wapthemeid,wapcolorschemeid,pagecount) values (888880005, 888880005, 1,0,0,0,'classic','03','mobile','01',0) ").executeUpdate();//executed ok 

session.createSQLQuery(" insert into layoutset (layoutsetid,groupid,companyid,privatelayout,logo,logoid,themeid,colorschemeid, wapthemeid,wapcolorschemeid,pagecount) values (888890005, 888880005, 1,0,0,0,'classic','03','mobile','01',0) ").executeUpdate(); //this fail with 

com.liferay.portal.kernel.dao.orm.ORMException: could not execute native bulk manipulation query 
      at com.liferay.portal.dao.orm.hibernate.ExceptionTranslator.translate(ExceptionTranslator.java:41) 
      at com.liferay.portal.dao.orm.hibernate.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:70) 
      at com.company.service.companyPersistenceImpl.doTest(companyPersistenceImpl.java:53) 
      at com.company.service.companyLocalServiceImpl.doTest(companyLocalServic 

回答

1

兩個插入件是完全相同的(對於列layoutsetid,groupid,companyid,privatelayout相同的值);失敗是由於我猜想的關鍵約束。 什麼是你的表的主鍵?

+0

第二種和第三種不同,檢查主鍵888880005和888890005 – cometta 2009-09-17 09:42:05

1

您是否包含整個堆棧跟蹤?似乎是在那裏缺少一些線。

但是,除了不同的layoutsetid,最後兩個查詢是相同的,這是毫無意義的。可能在表上有一些數據庫限制,以防止這導致錯誤。

+0

語句2和3是不同的,檢查主鍵888880005和888890005 – cometta 2009-09-17 09:40:54

+1

這就是我說的對嗎?只有主鍵是不同的。 – NickDK 2009-09-17 09:44:50