jsp页面报错,帮忙看看
javax.servlet.ServletException:org.hibernate.hql.ast.QuerySyntaxException:unexpectedt...
javax.servlet.ServletException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from user u where u.userName = ?]
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
我的代码
public User getUserByUName(String uName){
String hql = "select * from user u where u.userName = ?";
List<User> list = getSession().createQuery(hql).setParameter(0, uName).list();
if (list.size() > 0) {
return (User)list.get(0);
}
return null;
} 展开
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
我的代码
public User getUserByUName(String uName){
String hql = "select * from user u where u.userName = ?";
List<User> list = getSession().createQuery(hql).setParameter(0, uName).list();
if (list.size() > 0) {
return (User)list.get(0);
}
return null;
} 展开
3个回答
展开全部
String hql = "select * from user u where u.userName = ?";
List<User> list = getSession().createQuery(hql).setParameter(0, uName).list();
**hibernate的hql语句不支持使用 *,使用hibernate中的SQL方式查询才使用带*的SQL语句。
另外,user是关键字,建议取表名和字段名的时候别用数据库内置的关键字来命名
List<User> list = getSession().createQuery(hql).setParameter(0, uName).list();
**hibernate的hql语句不支持使用 *,使用hibernate中的SQL方式查询才使用带*的SQL语句。
另外,user是关键字,建议取表名和字段名的时候别用数据库内置的关键字来命名
追问
那我该怎么改呢?user表名已经建好了,不方便改动
追答
将hql语句改成:select u from (user表对应的实体类名称) u where u.userName = ?,再运行试试看。
user关键字为表名在这里影响不大,不使用关键字命名是作为数据库命名的规范;在程序开发中,SQL语句运行时,在某些情况下会有因为SQL语句中包涵关键字而出错的困扰,所以建议尽量避开。
展开全部
hql语句不需要select了,直接String hql = "from user u where u.userName = ?" 这样就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HQL="from user where userName=?"
更多追问追答
追问
这样改了的话,还有查询功能吗?
追答
可以 你试一下吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询