public void upContract(String conno,String emp,String fenhang,String type,int appnum){
Session session=this.getSession();
Transaction transaction= session.beginTransaction();
String hql="update ConvertContract set status='闲置',empno=?, fenhang=? where conno in (select top ? conno from convertcontract where contype =? and status='库存')";
Query query=session.createSQLQuery(hql);
query.setString(0, emp);
query.setString(1, fenhang);
query.setInteger(2, appnum);
query.setString(3, type);
query.executeUpdate();
transaction.commit();
if(session!=null){
session.close();
}
}
这段代码没有报错,但是也不更新。
主要的疑惑是:createSQLQuery,这种类型的更新该怎么写。
求大虾们帮我改下

解决方案 »

  1.   

    createSQLQuery是本地SQL语句的使用啊
    你想用HQL就createQuery吧
      

  2.   

    你拿到直接在DB运行这个sql,看看有没有更新数据。
      

  3.   

    createSQLQuery你认为可以执行更新操作???我认为他只能执行select语句,对非select语句不起作用
      

  4.   

    sql是没有写错的,我db里面运行过了要怎么样修改我那段代码才能执行成呢
      

  5.   

    int executeUpdate():的返回值是啥呢?
    @return The number of entities updated or deleted.
      

  6.   

    createSQLQuery执行的是原生SQL,里面的字符串只要是SQL语句就行
    不是HQL语句既然是执行原生SQL,所以增删改查都可以不过使用数据库操作语言时,要对齐进行事务提交