我尝试执行这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
答案 0 :(得分:1)
两个插入完全相同(列layoutsetid,groupid,companyid,privatelayout
的值相同);失败是由于我猜的关键约束。
你桌子的主键是什么?
答案 1 :(得分:1)
您是否包含了整个堆栈跟踪?似乎在那里缺少一些线条。
然而,除了不同的layoutsetid之外,最后两个查询是相同的,这是毫无意义的。可能表上有一些数据库约束来防止这种情况导致错误。