0 0

getHibernateTemplate().bulkUpdate()使用5

@Override
    public void updateBath(String deviceId)
    {
        if (StringUtils.isEmpty(deviceId))
        {
            return;
        }
        getHibernateTemplate().bulkUpdate("update RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?",
                deviceId);
    }

我这样做的一个批量更新数据库的记录,
但是报错:org.springframework.orm.hibernate3.HibernateQueryException: query must begin with SELECT or FROM: update [update com.huawei.cie.omu.maintenance.ras.domain.po.RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?]; nested exception is org.hibernate.QueryException: query must begin with SELECT or FROM: update [update com.huawei.cie.omu.maintenance.ras.domain.po.RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?]

问题补充:所有异常信息:
2012-09-19 19:49:16,289 ERROR [sbus-1-thread-5] [com.huawei.cie.nodemgr.sbus.core.skeleton.ServiceSkeletonImpl.invoke(152)] Exe method public abstract void com.huawei.cie.dmu.maintenance.ras.api.HandleRasService.updateRas(java.lang.String) with exception.
org.springframework.orm.hibernate3.HibernateQueryException: query must begin with SELECT or FROM: update [update com.huawei.cie.omu.maintenance.ras.domain.po.RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?]; nested exception is org.hibernate.QueryException: query must begin with SELECT or FROM: update [update com.huawei.cie.omu.maintenance.ras.domain.po.RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?]
        at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:660) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.orm.hibernate3.HibernateTemplate.bulkUpdate(HibernateTemplate.java:1141) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.orm.hibernate3.HibernateTemplate.bulkUpdate(HibernateTemplate.java:1137) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at com.huawei.cie.omu.maintenance.ras.dao.impl.RasDaoImpl.updateBath(RasDaoImpl.java:130) ~[na:na]
        at com.huawei.cie.omu.maintenance.ras.service.impl.RasServiceImpl.updateRasPos(RasServiceImpl.java:257) ~[na:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_26]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.6.0_26]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.6.0_26]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.6.0_26]
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) ~[org.springframework.transaction-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at $Proxy358.updateRasPos(Unknown Source) ~[na:na]
        at com.huawei.cie.omu.maintenance.ras.service.impl.HandleRasServiceImpl.updateRas(HandleRasServiceImpl.java:47) ~[na:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_26]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.6.0_26]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.6.0_26]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.6.0_26]
        at com.huawei.cie.nodemgr.sbus.core.skeleton.ServiceSkeletonImpl.invoke(ServiceSkeletonImpl.java:133) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.core.skeleton.ServiceSkeletonImpl.process(ServiceSkeletonImpl.java:93) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.core.mgr.local.RequestMsgHandler.onMessage(RequestMsgHandler.java:52) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.transport.SBusPortImpl.receiveMsg(SBusPortImpl.java:111) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
at com.huawei.cie.nodemgr.sbus.core.mgr.local.RequestMsgHandler.onMessage(RequestMsgHandler.java:52) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.transport.SBusPortImpl.receiveMsg(SBusPortImpl.java:111) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.transport.MqMessageHandler$MsgDispatcher.run(MqMessageHandler.java:110) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_26]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_26]
        at java.lang.Thread.run(Unknown Source) [na:1.6.0_26]
Caused by: org.hibernate.QueryException: query must begin with SELECT or FROM: update [update com.huawei.cie.omu.maintenance.ras.domain.po.RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?]
        at org.hibernate.hql.classic.ClauseParser.token(ClauseParser.java:106) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.hql.classic.PreprocessingParser.token(PreprocessingParser.java:131) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.hql.classic.ParserHelper.parse(ParserHelper.java:51) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.hql.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:240) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.hql.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:209) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770) ~[com.springsource.org.hibernate-3.6.10.Final.jar:3.6.10.Final]
        at org.springframework.orm.hibernate3.HibernateTemplate$39.doInHibernate(HibernateTemplate.java:1143) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.orm.hibernate3.HibernateTemplate$39.doInHibernate(HibernateTemplate.java:1) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406) ~[org.springframework.orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
        ... 29 common frames omitted
2012-09-19 19:49:16,290 ERROR [sbus-1-thread-5] [com.huawei.cie.nodemgr.sbus.core.skeleton.ServiceSkeletonImpl.process(98)] SBUS Process request msg error
com.huawei.cie.nodemgr.sbus.pack.invoke.ServiceFault: query must begin with SELECT or FROM: update [update com.huawei.cie.omu.maintenance.ras.domain.po.RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?]; nested exception is org.hibernate.QueryException: query must begin with SELECT or FROM: update [update com.huawei.cie.omu.maintenance.ras.domain.po.RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?]
        at com.huawei.cie.nodemgr.sbus.core.skeleton.ServiceSkeletonImpl.invoke(ServiceSkeletonImpl.java:153) ~[com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.core.skeleton.ServiceSkeletonImpl.process(ServiceSkeletonImpl.java:93) ~[com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.core.mgr.local.RequestMsgHandler.onMessage(RequestMsgHandler.java:52) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.transport.SBusPortImpl.receiveMsg(SBusPortImpl.java:111) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at com.huawei.cie.nodemgr.sbus.transport.MqMessageHandler$MsgDispatcher.run(MqMessageHandler.java:110) [com.huawei.cie.nodemgr.sbus-1.0.0-SNAPSHOT.jar/:1.0.0-SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_26]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_26]
        at java.lang.Thread.run(Unknown Source) [na:1.6.0_26]
2012年9月19日 11:19

2个答案 按时间排序 按投票排序

0 0

1、你的antlr版本是多少? 看看有没有冲突的 更新到hibernate-3.6.10 包中带的最新的试试

2、如果【1】不行修改hibernate配置:
hibernate.query.factory_class 为
   org.hibernate.hql.ast.ASTQueryTranslatorFactory
   或
  org.hibernate.hql.classic.ClassicQueryTranslatorFactory

2012年9月19日 12:14
0 0

getHibernateTemplate().bulkUpdate("update RasPo ras set ras.state='58',ras.errorCode='102' where ras.sysFlag=0 and ras.deviceId=?",
                deviceId);

这样用很正确的。 怀疑是不是一起用Query 现在改成bulkUpdate 没有编译造成的?

能否贴全异常

2012年9月19日 11:48

相关推荐

    gethibernatetemplate的find方法

    gethibernatetemplate的find方法,find(String queryString);find(String queryString , Object value);find(String queryString, Object[] values);findByExample(Object exampleEntity);findByExample(Object ...

    getHibernateTemplate()使用方法

    整合了hibernate的getHibernateTemplate()使用方法 全面详细 带有相应的例子

    getHibernateTemplate()查询

    getHibernateTemplate()查询 hibernate hql

    getHibernateTemplate()有模糊查询和 分页

    getHibernateTemplate()有模糊查询和 分页getHibernateTemplate()有模糊查询和 分页

    getHibernateTemplate

    getHibernateTemplate()方法

    手机充值卡充值

    手机充值卡全过程 纯净的练习s2sh的过程 package dao.hibernate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;... this.getHibernateTemplate().update(card); }

    jsp中调用dao的getHibernateTemplate()时,报空指针

    jsp中调用dao的getHibernateTemplate()时,报空指针

    getHibernateTemplate分页-模糊查询

    getHibernateTemplate分页-模糊查询.hibernate查询以及分页查询等方法使用。

    hibernate模板类详解

    find(String queryString , Object value); 示例:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test"); 这样的例子里面还有很多

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    Hibernate使用技巧汇总

    public class UserDAO extends HibernateDaoSupport implements IUserDAO { public void insertUser(User user) { getHibernateTemplate().saveOrUpdate(user); } } &lt;br&gt; 上面的...

    spring 声明式事务

    1.本例子的使用了 ssh ...2.本例子DAO层 使用了 getHibernateTemplate 来实现数据的新增修改和删除 3.本例子使用了声明式事务 4.本例子提供了详细的使用方法,可以根据 readme.txt 来逐步的验证声明式事务是否起作用

    ssh(structs,spring,hibernate)框架中的上传下载

     其中save(FileActionForm fileForm)方法,将封装在fileForm中的上传文件保存到数据库中,这里我们使用FileActionForm作为方法入参,FileActionForm是Web层的表单数据对象,它封装了提交表单的数据。将...

    SSH2增删改查使用HibernateTemplate

    SSH2增删改查使用HibernateTemplate

    图书查询-Java-Web程序设计教程-[共2页].pdf

    在 DAO 实现类 BookDAO.java 代码如下: public List getRequiredBookByName(String name){ try{ List books=this.getHibernateTemplate(). find("from Book where bookname like '%"+name+"%'"); return books; }...

    Struts2 Spring hibernate 国际化 表单验证 安全退出

    这是之前分页的升级版 带国际化 表单验证 用户登录 安全退出 功能都实现了... List list= this.getHibernateTemplate().find("from Students where username=? and password=?", param); return list.isEmpty(); }

    客户关系管理系统框架搭建(二)

    &lt;property name="hibernate.hbm2ddl.auto"&gt;update &lt;property name="hibernate.show_sql"&gt;true &lt;mapping resource="cn/itcast/crm/domain/SysUserGroup.hbm.xml"/&gt; * 测试.放置在junit包...

    Hibernate中Criteria的完整用法.docx

    Spring 的框架提供了getHibernateTemplate ().findByCriteria(detachedCriteria) 方法可以很方便地根据DetachedCriteria 来返回查询结 果。 DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName...

    使用原生sql.txt

    我就是问: getHibernateTemplate()这个方法里没有执行sql语句的方法,只能用hql语句吗?

    hibernate保存不到数据1

    解决getHibernateTemplate().save ()不能将数据保存到数据库的问题JusterDu 2016-03-15 08:38:57 1857

Global site tag (gtag.js) - Google Analytics