String sql="insert into result(id,aimTurnover,aimObjectTask,objectTask,aimRestTask,aimSort,year,mouth) select '"+random+"',aimTurnover,aimObjectTask,objectTask,aimRestTask,aimSort,'"+year1+"','0"+month1+"' from result where year='"+year+"' and mouth='0"+month+"' and not exists(select * from result a where year='"+year1+"' and mouth='0"+month1+"' and seller=a.seller)";   
getSession().createSQLQuery(sql); 
getSession().clear();请教hql可以执行sql的插入、修改操作吗?
上面的SQL语句直接执行是没有问题的  但是通过hibernate执行就没反应,也不报错
可以getSession().createSQLQuery(sql);的方法执行SQL语句吗?
有什么好的办法没有? 

解决方案 »

  1.   

    SQLQuery query=getSession().createSQLQuery(sql);
    query.executeUpdate();
      

  2.   

    这个好像只能执行HQL 
    Update queries only supported through HQL
      

  3.   

    getSession().createSQLQuery(sql)  可以的
      

  4.   

    query.executeUpdate(); 只支持update和delete
    如果你集成了spring可以考虑,继承JdbcDaoSupport,利用JdbcTemplate的public void execute(String sql)
    方法,应该可以
      

  5.   

    hql好像不可以执行sql的插入、修改操作, 楼主试试吧, 你看看是不是把异常信息给catch 住了
      

  6.   

    session通过createSQLQuery是可以执行sql语句的!但是在hibernate中最好用hql  没有反映是因为你的事务配置那有点问题!
      

  7.   

    getSession().createSQLQuery(sql) 
      

  8.   


    正解,这个方法就是执行SQL语句的
      

  9.   

    hibernate 不能引用这样的变量
      

  10.   

    看看是不是事务没有提交,Hibernate是可以这样执行SQL的,建议最好封装成对象来操作~
      

  11.   

    String  hql="这里写sql语句"
    QLQuery query=getSession().createSQLQuery(hql); 
    query.executeUpdate(); 下面是按条件删除的一个例子:
    public void delete(String id){
    String hql="delete From Students as t where t.id=?";
    Query query=this.session.createQuery(hql);
    query.setString(0, id);
    query.executeUpdate();
      

  12.   

    Hibernate提供执行SQL语句的方法!!SQLQuery query=getSession().createSQLQuery(sql); 
      

  13.   

    可以,使用了hibernate,就可以用它提供的模板.
    Stu stu=(Stu)getsession.get(Stu.class,1);//先加载一个对象
    getHibernate().delete(对象);//现用它来删除/增/修改
    getHibernate().save(对象);//
    getHibernate().update(对象);//同时也可以使用:hql对数据对象来操作。
      

  14.   

    Query query=getSession().createSQLQuery(sql); 
    Query.executeUpdate();
    Query接口即可以数据查询又可以进行增、删、改。
      

  15.   

      Hibernate 可以是可以执行 SQL 语句的,只不过需要在配置文件中进行相关的配置,直接执行会引发异常,具体什么异常记不太清了。
      

  16.   

    建议用hibernate的时候最好不要用sql语句,由于hibernate自身的一些原因,一些正常的sql也无执行。
    而且报告也来的异常也很难正确定位,用hql就不会有那么多的麻烦,二者的区别也不是很大。
      

  17.   

    加上这两句试下:
    Transaction tx = session.beginTransaction();
    tx.commit();
    事务提交下!
      

  18.   

    可能是这句话的缘故:getSession().clear(); 
    同时执行插入、修改操作,还要支持事务
    Transaction tx = session.beginTransaction(); 
    SQLQuery query=getSession().createSQLQuery(sql); 
    query.executeUpdate(); 
    tx.commit(); 
      

  19.   

    没有事务提交呀!这样是可以执行的了
    Transaction ts=session.beginTransaction();
    ts.commit();
    数据要更新数据,这个就是向数据库说明的“我要加数据了,快更新啦,呵呵!!!”
      

  20.   

    this.getSession().createSQLQuery(sql)是可以执行Sql语句的,如果实在没有办法就用JDBC来解决吧,我前几天用要对数据库进行位运算,这个接口也不行,后面直接用this.getSession().xxxx() 连接Jdbc来完成,呵呵~
    我可不管别的那么多,任务急  后面终于完成了
      

  21.   


    getSession().createSQLQuery(sql); 
    这句话是做什么的,首先要弄明白,把书再拿出来翻翻看,
      

  22.   

    若要用sql语句的话, 可以试试 hibernate的nameQuery