hibernate createSQLQuery批量插入

时间:2009-09-17 09:09:53

标签: java hibernate spring

我尝试执行这3个语句,1和2成功,但是当达到3语句时,我得到错误,是因为我试图在语句2中插入同一个表并导致语句3失败?顺便说一下,所有3个语句都在一个@spring事务中

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

2 个答案:

答案 0 :(得分:1)

两个插入完全相同(列layoutsetid,groupid,companyid,privatelayout的值相同);失败是由于我猜的关键约束。 你桌子的主键是什么?

答案 1 :(得分:1)

您是否包含了整个堆栈跟踪?似乎在那里缺少一些线条。

然而,除了不同的layoutsetid之外,最后两个查询是相同的,这是毫无意义的。可能表上有一些数据库约束来防止这种情况导致错误。

相关问题