当前位置:编程学习 > JAVA >>

一句简单的hql怎么老有问题 谢谢

students = session.createQuery("select s from User s where s.username like :a and s.password like:b")
.setParameter("a", u)
.setParameter("b", p)
.list();
u和 p是String where不起作用啊。
要是:
students = session.createQuery("select * from User s where s.username like :a and s.password like:b")
.setParameter("a", u)
.setParameter("b", p)
.list();
提示:
2012-02-25 18:15:43 ERROR [org.hibernate.hql.PARSER] line 1:8: unexpected token: *
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from com.wangmeng.dao.User s where s.username like :a and s.password like:b] --------------------编程问答-------------------- hql语句的解析是不支持直接*这个字符的 你可以用select s from user s 这样来替代。 --------------------编程问答-------------------- 可以试试楼上的 --------------------编程问答-------------------- %?% 试试 --------------------编程问答-------------------- *肯定不认。

students = session.createQuery("select s from User s where s.username like :a and s.password like:b")
.setParameter("a", u)
.setParameter("b", p)
.list();

中,u、p都是传进来的参数,而且都是string,请这样试试

students = session.createQuery("select s from User s where s.username like :a and s.password like:b")
.setParameter("a", '"+ u +"')
.setParameter("b", '"+ p +"')
.list();

--------------------编程问答-------------------- 顶楼上,或试试这样
students = session.createQuery("select s from User s where s.username like ? and s.password like ?")
.setParameter(0, u)
.setParameter(1, p)
.list(); --------------------编程问答-------------------- students = session.createQuery("select s from User s where s.username like :a and s.password like:b")
.setString("a", u)
.setString("b", p)
.list();


或者

students = session.createQuery("select s from User s where s.username like ? and s.password like ?")
.setParameter(0, u)
.setParameter(1, p)
.list(); --------------------编程问答-------------------- from User s where s.username like :a and s.password like:b
.setParameter(0, u)
.setParameter(1, p)
.list(); --------------------编程问答--------------------
引用 6 楼 geminit2011 的回复:
students = session.createQuery("select s from User s where s.username like :a and s.password like:b")
.setString("a", u)
.setString("b", p)
.list();


或者

students = session.createQuery("sele……

+1 --------------------编程问答--------------------
引用 5 楼 woaichinaidiao 的回复:
顶楼上,或试试这样
students = session.createQuery("select s from User s where s.username like ? and s.password like ?")
.setParameter(0, u)
.setParameter(1, p)
.list();

++ --------------------编程问答-------------------- hql全查只需要from 对象类型就可以了
哪里需要像你的sql那样去select × from 什么的嘛 --------------------编程问答-------------------- hql全查只需要from 对象类型就可以了
where 后面的语句,如果string类型使用like的话,需要加上单引号
例如: where username like 'aa%' --------------------编程问答-------------------- session.createQuery("from User s where s.username = ? and s.password = ?")
.setParameter(0, u)
.setParameter(1, p)
.list();
我还是比较喜欢这样写 --------------------编程问答--------------------
from 实体类 where 条件 


--------------------编程问答-------------------- 是不是包冲突啊,我以前就因为hibaernate和struts2的包冲突,纠结了几天
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,