Object[] params = new Object[]{normalScore,midtermScore,terminalScore,experimentScore,totalScore,re,studentId};
String hql = "update MarkAssociation ma set ma.normalScore=? and ma.midtermScore=? and ma.terminalScore=? and ma.experimentScore=? and ma.totalScore=? and ma.re=? where ma.student.studentId=?" ;
this.updateByQuery(hql,params);

解决方案 »

  1.   

    public void updateScore(Integer normalScore, Integer midtermScore,
    Integer terminalScore, Integer experimentScore, Integer totalScore,
    String re, Integer studentId) {
    if(normalScore !=null && midtermScore != null && terminalScore != null && experimentScore != null && totalScore != null 
     && studentId != null){
    Object[] params = new Object[]{normalScore,midtermScore,terminalScore,experimentScore,totalScore,re,studentId};
    String hql = "update MarkAssociation ma set ma.normalScore=? and ma.midtermScore=? and ma.terminalScore=? and ma.experimentScore=? and ma.totalScore=? and ma.re=? where ma.student.studentId=?" ;
    this.updateByQuery(hql,params);
    }
    }
      

  2.   

    java.lang.IllegalArgumentException: node to traverse cannot be null!
    at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:55)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:280)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1651)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1293)
    at $Proxy22.createQuery(Unknown Source)
    at com.student.dao.impl.HibernateDaoImpl$1.doInHibernate(HibernateDaoImpl.java:57)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339)
    at com.student.dao.impl.HibernateDaoImpl.updateByQuery(HibernateDaoImpl.java:55)
    at com.student.dao.impl.ScoreSearchDaoImpl.updateScore(ScoreSearchDaoImpl.java:116)
    at com.student.service.ScoreSearchService.updateScoreMark(ScoreSearchService.java:130)
    at com.student.service.ScoreSearchService$$FastClassByCGLIB$$10d48194.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
    at com.student.service.ScoreSearchService$$EnhancerByCGLIB$$faa63784.updateScoreMark(<generated>)
    at com.student.service.ScoreSearchServiceTest.testUpdateScoreMark(ScoreSearchServiceTest.java:70)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
    at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
      

  3.   

    HQL写错了吧
    update MarkAssociation ma set ma.normalScore=? , ma.midtermScore=? , ma.terminalScore=? and ma.experimentScore=? , ma.totalScore=?, ma.re=? where ma.student.studentId=?
      

  4.   


    update多个字段之间用,号隔开查询时多个参数之间用and隔开
      

  5.   

    另外,很少见hibernate这么用,要么你就干脆jdbc.
      

  6.   

    Hql写错了,update 表名 set 列名1=? ,列名2=? where 条件
    注意set后用逗号隔开
      

  7.   

    都用了Hibernate了,为什么不直接用save方法?