hibernate hql查询语句问题;

chengge37 2011-09-28 01:22:42
我想检查用户是否存在:
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()方法是返回集合的)?
...全文
137 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
猴王牌 2012-03-13
  • 打赏
  • 举报
回复
1lou
wangxinde317 2011-09-29
  • 打赏
  • 举报
回复
顶1楼。
丶蒙圈丶 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 trocp 的回复:]

你这个是个查询的sql
怎么能用executeUpdate()呢

要用.list();
List list =session.createQuery(hql).setParameter(0,user.getName())
.setParameter(1,user.getPassword())
.list……
[/Quote]

+++
小菜鸟的博客 2011-09-29
  • 打赏
  • 举报
回复
当我们查询的时候,需要返回List集合,这是用list(),但我们想更新的时候就有executeUpdate();
zhangmengxm 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 snowday88 的回复:]
+1

引用 1 楼 trocp 的回复:
你这个是个查询的sql
怎么能用executeUpdate()呢

要用.list();
List list =session.createQuery(hql).setParameter(0,user.getName())
.setParameter(1,user.getPassword())
.list();

判断list的长度……
[/Quote]

+1
pm90125 2011-09-29
  • 打赏
  • 举报
回复

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);
}

杀猪剑客 2011-09-29
  • 打赏
  • 举报
回复
+1
[Quote=引用 1 楼 trocp 的回复:]
你这个是个查询的sql
怎么能用executeUpdate()呢

要用.list();
List list =session.createQuery(hql).setParameter(0,user.getName())
.setParameter(1,user.getPassword())
.list();

判断list的长度是不是>0
[/Quote]
emjava 2011-09-29
  • 打赏
  • 举报
回复
看看这样行不行:

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() ;
chengge37 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 my_caterpillar 的回复:]
个人感觉
第一:先解决问题
第二:问题解决了,停下来针对这一个问题是看HIBERNATE源代码,看API
[/Quote]
API我会看的,只是想听听别人的见解。。
wtc860104 2011-09-28
  • 打赏
  • 举报
回复
hibernate这么用还不如不用
my_caterpillar 2011-09-28
  • 打赏
  • 举报
回复
个人感觉
第一:先解决问题
第二:问题解决了,停下来针对这一个问题是看HIBERNATE源代码,看API
chengge37 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 trocp 的回复:]
你这个是个查询的sql
怎么能用executeUpdate()呢

要用.list();
List list =session.createQuery(hql).setParameter(0,user.getName())
.setParameter(1,user.getPassword())
.list();

判断list的长度是不是>0
[/Quote]
我还以为有这个方法,,应该会像jdbc那种executeUpdate()那样。返回一个int类型的值。。呵呵。
那在hql中这个executeUpdate()有什么用?
yexiongMYBH 2011-09-28
  • 打赏
  • 举报
回复
你使用executeUpdate();这个方法不行。


oO临时工Oo 2011-09-28
  • 打赏
  • 举报
回复
你这个是个查询的sql
怎么能用executeUpdate()呢

要用.list();
List list =session.createQuery(hql).setParameter(0,user.getName())
.setParameter(1,user.getPassword())
.list();

判断list的长度是不是>0

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧