我想检查用户是否存在:
hql语句让如下:
String hql="from UserBean where name=? and password=?";
int b=session.createQuery(hql).setParameter(0,user.getName())
            .setParameter(1,user.getPassword())
            .executeUpdate();
org.hibernate.hql.ast.QueryTranslatorImpl.errorIfSelect(QueryTranslatorImpl.java:301)
org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:418)
org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:283)
org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1168)
org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:117)
com.chengge.dao.impl.UserDaoImpl.checkUser(UserDaoImpl.java:36)
com.chengge.service.impl.UserServiceImpl.checkUser(UserServiceImpl.java:24)
com.chengge.action.UserAction.login(UserAction.java:25)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
不过报错了。还有我想知道如果用户存在,b的值会是多少?是1吗?
hql语句中有没只返回一行数据的语句的(list()方法和iterator()方法是返回集合的)?

解决方案 »

  1.   

    你这个是个查询的sql
    怎么能用executeUpdate()呢要用.list();
    List list =session.createQuery(hql).setParameter(0,user.getName())
                        .setParameter(1,user.getPassword())
                        .list();判断list的长度是不是>0
      

  2.   

    你使用executeUpdate();这个方法不行。
      

  3.   

    我还以为有这个方法,,应该会像jdbc那种executeUpdate()那样。返回一个int类型的值。。呵呵。
    那在hql中这个executeUpdate()有什么用?
      

  4.   

    个人感觉
    第一:先解决问题
    第二:问题解决了,停下来针对这一个问题是看HIBERNATE源代码,看API
      

  5.   

    API我会看的,只是想听听别人的见解。。
      

  6.   

    看看这样行不行:String hql="from UserBean where name=? and password=?";Query query = session.createQuery(hql);query.setString (0,user.getName());query.setString(1,user.getPassword()) ;int b = query.executeUpdate() ;
      

  7.   


    String hql="from UserBean where name=? and password=?";Query query = session.createQuery(hql);query.setString (0,user.getName());query.setString(1,user.getPassword()) ;List list = query.list();if(list.size()>0){
       reutrn list.get(0);
    }
      

  8.   

    当我们查询的时候,需要返回List集合,这是用list(),但我们想更新的时候就有executeUpdate();