写了一个update,执行的时候报不支持中文,上网查了一些资料,说只要在hibernate.cfg.xml加上
<property name="hibernate.query.factory_class">
        org.hibernate.hql.classic.ClassicQueryTranslatorFactory
    </property>
即可,可是问题又来了:报错 org.hibernate.QueryException: query must begin with SELECT or FROM: update [update cn.timesnet.TDTY_SMSCONTENT set CONTENT=11 where SCID=15]我的程序如下:public void update(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setHeader("Cache-Control", "no-cache");
Session session=HibernateSessionFactory.getSession();
    Transaction tx=session.beginTransaction();
    String id=request.getParameter("id");
System.out.println(id);
String content=request.getParameter("content");
content = URLDecoder.decode(content,"UTF-8");
System.out.println(content);
//session.update("update TDTY_SMSCONTENT set CONTENT="+content+" where SCID="+id); 
   Query query = session.createQuery("update TDTY_SMSCONTENT set CONTENT="+content+" where SCID="+id);
//System.out.println(query);
query.executeUpdate();
    tx.commit();
session.close();
}好象3.0不支持query.executeUpdate();  那具体该怎么做啊。。初学hibernate,望大家指点。。急。。在线等。。

解决方案 »

  1.   

    不是啊,只要是中文就会报错。。但如果我又加上<property name="hibernate.query.factory_class"> 
            org.hibernate.hql.classic.ClassicQueryTranslatorFactory 
         </property> 
    那Query query = session.createQuery("update TDTY_SMSCONTENT set CONTENT="+content+" where SCID="+id); 
    //System.out.println(query); 
    query.executeUpdate(); 这里又有错误。。该怎么写啊。
      

  2.   

    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>这是让你的createQuery又回到了hibernate2.0的接口,hibernate2.0中不支持批量更新,所以报错,将这句去了。Hibernate3.0执行批量更新的程序代码: Session session = sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction(); 
    String hqlUpdate = "update Customer set name = :newName where name = :oldName"; int count= session.createQuery( hqlUpdate ).setString( "newName", newName ).setString    ( "oldName", oldName ).executeUpdate(); 
    tx.commit(); 
    session.close();