hibernate实现一个功能 Sc表中有grade ScId中有sno 根据传入的sno的值将grade的值改为传入的grade的值 小弟hibernate学的不好 我是这么写的 直接报错了        public void upGrade(String sno,Short grade){
    Session session=HibernateSessionFactory.getSession();
    Transaction tran=session.beginTransaction();
    String hql="update Sc sc set sc.grade=:grade where sc.ScId.students=:sno";
    Query q=session.createQuery(hql);
    q.setParameter("sno", sno);
    q.setParameter("grade", grade);
    session.save(q);
    tran.commit();
}语句就写错了 估计整个写法也不对 高手教我

解决方案 »

  1.   

    或者怎么直接用sql语句写 整个具体方法怎么写
      

  2.   

    hql语句是跟hibernate查询语句,也就是hibernate关联的对象查询语言!
    也就是SC要有这么个类。。而grade, scid是SC类中的一个属性,那上面的hql就没错。
    sql: update sc grade=? where scid=?;
      

  3.   

    楼主的HQL貌似没有错,错的在于你要执行这条HQL语句而不是用session.save(q);这个保存对象的方法去执行HQL语句.
      

  4.   


    String hql="update Sc sc set sc.grade=:grade where sc.ScId.students=:sno";
    这里不对把,应该是sc.sno=:sno
      

  5.   

    session.save(q);
    你方法调用错啦,save方法是保存一个q对象。
    你直接设置你要更改的对象属性,然后在调用update()
    传一个对象就OK了。