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

hql语言问题,求解!



public class LoginAction implements Action {
private Userinfo user;
public String execute() throws Exception {
HibernateSessionFactory.getSession().beginTransaction();
Query query = HibernateSessionFactory.getSession().createQuery("from Userinfo where username=:uname and password=:pwd");
query.setString("uname", user.getUsername());
query.setString("pwd", user.getPassword());
Userinfo user2 = (Userinfo)query.uniqueResult();
System.out.println(user2.getUsername());
HibernateSessionFactory.getSession().getTransaction().commit();
HibernateSessionFactory.getSession().close();
return null;
}
public Userinfo getUser() {
return user;
}
public void setUser(Userinfo user) {
this.user = user;
}

}
--------------------编程问答-------------------- user为空 --------------------编程问答-------------------- 空指针异常,请LZ,自己debug模式,设置一个断点,看看里面的值是否空
你如果user为null,直接获取getName等,是不行的,获取之前,先判断下是否为空吧 --------------------编程问答-------------------- user是JSP页面传值过去的呀?
<body>
    用户登录<br/>
    <s:form action="loginAction.action" method="post">
    用户名:<s:textfield name="user.username"></s:textfield><br/>
    密码:<s:password name="user.password"></s:password><br/>
    <s:submit value="登录"></s:submit>
    </s:form>
  </body>
--------------------编程问答--------------------
引用 2 楼 xingfuzhuzi1314 的回复:
空指针异常,请LZ,自己debug模式,设置一个断点,看看里面的值是否空
你如果user为null,直接获取getName等,是不行的,获取之前,先判断下是否为空吧

+1
请lz先进行调试 --------------------编程问答-------------------- 多用debug调试
不会就在set execute方法里判断user是否为null --------------------编程问答--------------------
引用 3 楼 gowuyue 的回复:
user是JSP页面传值过去的呀?
<body>
    用户登录<br/>
    <s:form action="loginAction.action" method="post">
    用户名:<s:textfield name="user.username"></s:textfield><br/>
    密码:<s:password name="user.password"></s:password><br/>
    <s:submit value="登录"></s:submit>
    </s:form>
  </body>


楼上几位的意思,不是说你的参数为空,可能是这个查询条件下查询出的数据user为空。

所以你debug下。 --------------------编程问答-------------------- execute()这个方法 return null;result能找到吗? --------------------编程问答--------------------  Userinfo user2 = (Userinfo)query.uniqueResult(); 
 System.out.println(user2.getUsername()); 
这个user2对象为空
所以你在用这个对象的属性时候,user2.getUsername()会报空指针
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,