日期:2014-05-17  浏览次数:20662 次

一个莫名其妙的问题,求助


在用hibernate操作数据库的时候,session.createQuery(sql).executeUpdate();使用的这个方法。。然后抛出异常:
org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query


说明一下,我的sql语句没有问题,是一个批量插入的语句,我把后台hibernate打印的语句,放在plsql里面是可以执行的,大概插入1W多条吧。。说明不是sql语句的问题。

大侠,求解。。



------最佳解决方案--------------------


那你把sql贴出来吧,再把session.createQuery(sql).executeUpdate();这一句的完整代码也贴出来
------其他解决方案--------------------
sql里的字段是跟实体的名称对应吗
------其他解决方案--------------------
直接用的sql,跟实体无关

------其他解决方案--------------------
不知道你的sql是怎么写的


建议你把createQuery换成createSQLQuery在试试

提醒一下,SQL与HQL是不一样的
------其他解决方案--------------------
这个我都知道的。。sql确实没关系,执行的方法是createSQLQuery,上面我打错了。

我是先在plsql里面写的语句,确定语句可以执行了以后,才copy到代码里面的
------其他解决方案--------------------
那就把createSQLQuery换成createQuery
------其他解决方案--------------------
看这里


英文的解释,我看了,很容易懂的
------其他解决方案--------------------
这个帖子我看过了。。。。要按照里面的方法试过了。。本来我就是createSQLQuery,按照这个帖子说的,改成了createQuery,还是不行。。
------其他解决方案--------------------

    sql语句
     String sql = 

"insert into ia_generalledger\n" +
"  select ia_generalledger_seq.nextval, --id\n" + 
"         a.stockorgid, " + 
"         a.styleid, " + 
"         a.fiscal_year, " + 
"         a.fiscal_month, " + 
"         a.innum,  " + 
"         a.inamount,  " + 
"         a.outnum,  " + 
"         a.outamount,  " + 
"         a.num,  " + 
"         a.price,  " + 
"         a.amount, " + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" +