hibernate hql查询语句问题;
我想检查用户是否存在:
hql语句让如下:
Java code
String hql="from UserBean where name=? and password=?";
int b=session.createQuery(hql).setParameter(0,user.getName())
.setParameter(1,user.getPassword())
.executeUpdate();
Java code
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()方法是返回集合的)?
------解决方案-------------------- 你这个是个查询的sql
怎么能用executeUpdate()呢
要用.list();
List list =session.createQuery(hql).setParameter(0,user.getName())
.setParameter(1,user.getPassword())
.list();
判断list的长度是不是>0
------解决方案-------------------- 你使用executeUpdate();这个方法不行。
------解决方案-------------------- 个人感觉
第一:先解决问题
第二:问题解决了,停下来针对这一个问题是看HIBERNATE源代码,看API
------解决方案-------------------- hibernate这么用还不如不用
------解决方案-------------------- 看看这样行不行:
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() ;
------解决方案-------------------- +1
探讨 你这个是个查询的sql 怎么能用executeUpdate()呢 要用.list(); List list =session.createQuery(hql).setParameter(0,user.getName()) .setParameter(1,user.getPassword()) .list(); 判断list的长度是不是>0
------解决方案-------------------- 探讨 +1 引用: 你这个是个查询的sql 怎么能用executeUpdate()呢 要用.list(); List list =session.createQuery(hql).setParameter(0,user.getName()) .setParameter(1,user.getPassword()) .list(); 判断list的长度……
------解决方案-------------------- 当我们查询的时候,需要返回List集合,这是用list(),但我们想更新的时候就有executeUpdate();
------解决方案-------------------- 探讨 你这个是个查询的sql 怎么能用executeUpdate()呢 要用.list(); List list =session.createQuery(hql).setParameter(0,user.getName()) .setParameter(1,user.getPassword()) .list……