首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

一个莫名其妙的有关问题

2012-12-15 
一个莫名其妙的问题,求助在用hibernate操作数据库的时候,session.createQuery(sql).executeUpdate()使用

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


在用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" + 


"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         a.orgid,\n" + 
"         null,\n" + 
"         null,\n" + 
"         null,\n" + 
"         a.ornacode\n" + 
"\n" + 
"      from (select  h.org_id orgid,\n" + 
"\n" + 
"\n" + 
"               h.fiscal_year fiscal_year,\n" + 
"               h.fiscal_month fiscal_month,\n" + 
"\n" + 
"               h.stock_org_id stockorgid,\n" + 
"\n" + 
"               l.style_id styleid,\n" + 
"\n" + 
"               l.num as innum,\n" + 
"               l.amount inamount,\n" + 
"               0.0 outnum,\n" + 
"               0.0 outamount,\n" + 
"              l.num as num,\n" + 
"              l.price as price,\n" + 
"              l.amount as amount,\n" + 
"               l.orna_code ornacode\n" + 
"          from ia_ia_bill_head h\n" + 
"\n" + 
"         inner join ia_ia_bill_line l on h.id = l.head_id\n" + 
"\n" + 
"         where l.approvaluserid is null\n" + 
"\n" + 
"           and h.fiscal_year = '2010'\n" + 
"           and h.fiscal_month = '7'\n" + 
"           and h.stock_org_id = " +stockOrgId+
"           and h.org_id = " + Common.getLoginOrg().getOrgId()+
"           and h.transceiver_flag='1'\n" + 
"         order by h.CREATEDATE, l.id\n" + 
"             ) a;";


;
this.commonDAO.executeSql(sql);


[其他解释]

   commonDAO的executeSql方法

   public int executeSql(String sql) throws SqlOperationException {
try {
Session session = getSession();
session.beginTransaction();
return session.createSQLQuery(sql).executeUpdate();
} catch (Exception e) {
e.printStackTrace();
throw new SqlOperationException(e.getMessage());
}
// return 0;
}

[其他解释]
不懂啊
[其他解释]
你的SQL多了个分号...end of story
[其他解释]
null

热点排行