LoginAction.java代码如下:package com.mywork.action;import java.util.Iterator;
import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;import com.mywork.hibernate.UserTable;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {
/**
 * 
 */
private static final long serialVersionUID = 8384655992107298607L;
private String username;
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String execute() throws Exception { String user = null;
String pass = null;
String truepass = null;
UserTable ut = new UserTable();
user = ut.getUserName();
pass = ut.getUserPass(); SessionFactory sf = new Configuration().configure()
.buildSessionFactory();
Session session = sf.openSession();
Transaction tran = session.beginTransaction();
Query qu = session
.createQuery("from UserTable where UserTable.user_name='"
+ user + "'"); try {
Iterator it = qu.iterate();
ut = (UserTable) it.next();
truepass = ut.getUserPass(); } catch (Exception e) {
System.out.println("error!");
}
tran.commit();
sf.close(); if (pass.equals(truepass)) {
return "success";
} else {
return "error";
}
}}
其它映射文件以及hibernate.cfg.xml struts.xml web.xml 配置都正确
出现如下错误:
java.lang.NullPointerException
org.hibernate.hql.ast.tree.IdentNode.resolveAsNakedComponentPropertyRefLHS(IdentNode.java:195)
org.hibernate.hql.ast.tree.IdentNode.resolve(IdentNode.java:85)
org.hibernate.hql.ast.tree.DotNode.resolveFirstChild(DotNode.java:139)
org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:462)
org.hibernate.hql.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4316)
org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1211)
org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4032)
org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3518)
org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1758)
org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
这段代码估计是哪里有问题 高手给看看 指正一下 完事立马结贴 在线等
我要实现的是用户的登陆验证(用户名和密码)

解决方案 »

  1.   

    Query qu = session
    .createQuery("from UserTable u where u.user_name='"
    + user + "'"); 
      

  2.   

    Query qu = session 
    .createQuery("from UserTable where user_name='" 
    + user + "'");
      

  3.   

    这个类继承ModelDriven<>看看
      

  4.   

    Query qu = session 
    .createQuery("from UserTable where UserTable.user_name='" 
    + user + "'"); 
    应该是这里取到的qu是null
      

  5.   

    又出现这个问题了
    org.hibernate.QueryException: could not resolve property: user_name of: com.mywork.hibernate.UserTable [from com.mywork.hibernate.UserTable u where u.user_name='null']
    org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
      

  6.   

    我想问一下 我执行查询的语句from UserTable u where u.user_name='" 
    + user + "'"里面的u.user_name的user_name是不是指的我映射文件UserTable.hbm.xml里的
    <property name="userName" type="java.lang.String">
       <column name="user_name" length="50" not-null="true" unique="true" />里面的name="userName"
    也就是说我要执行查询语句时是执行这一句
    from UserTable u where u.user_name='" 
    + user + "'"
    还是执行这一句
    from UserTable u where u.userName='" 
    + user + "'"
      

  7.   

    服了,你直接用username就能取到用户名了,还多此一举做什么
      

  8.   


    u.user_name是类里面的属性,不是配置文件中的
      

  9.   

    Query qu = session 
    .createQuery("from UserTable u where u.user_name='" 
    + username + "'"); 这么写还有就是映射字段名最好不要有下划线,user_name这样的