2013年9月22日星期日

Execute commands and passwords based on user query error .... seek help !

 This post last edited by the u010034034 on 2013-09-22 13:10:06
error message:
Struts Problem Report
Struts has detected an unhandled exception:
Messages: org.hibernate.impl.SQLQueryImpl cannot be cast to com.pb.bean.CRM_User
File: com / pb / dao / impl / UserDaoImpl.java
Line number: 23

Contents:
UserLoginAction:

public class UserLoginAction extends ActionSupport {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private String user_name;
private String user_pwd;

private String msg;

// 验证用户是否存在
@SuppressWarnings("unchecked")
public String userLogin() throws Exception {
System.out.println("用户名:" + user_name);
System.out.println("用户密码:" + user_pwd);
Map<String, Object> session = ActionContext.getContext().getSession();
Map<String, Object> request = (Map<String, Object>) ActionContext
.getContext().get("request");
System.out.println("request的类型是:"
+ ActionContext.getContext().get("request").getClass());
CRM_User user = new UserDaoImpl().userLogin(user_name, user_pwd);
System.out.println("用户电话:" + user.getUser_phone());

session.put("user", user);
session.put("user_id", user.getUser_id());
session.put("user_name", user.getUser_condition());
session.put("user_power", user.getUser_power());
session.put("user_id", user.getUser_isdel());
session.put("user_id", user.getUser_phone());
request.put("requestuser", user);
return SUCCESS;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public static long getSerialversionuid() {
return serialVersionUID;
}

public String getUser_name() {
return user_name;
}

public void setUser_name(String user_name) {
this.user_name = user_name;
}

public String getUser_pwd() {
return user_pwd;
}

public void setUser_pwd(String user_pwd) {
this.user_pwd = user_pwd;
}

}

IUserDao:

//通过用户名和用户密码查询用户(登录)
CRM_User userLogin(String username,String password)throws Exception;


UserDaoImpl:

@Override
public CRM_User userLogin(String username, String password)
throws Exception {
Session session=HibernateSessionFactory.getSession();
Transaction tx=session.beginTransaction();
String hql="from CRM_User as 1 where 1.user_name=? and 1.user_pwd=? and 1.user_isdel=0";
CRM_User user=(CRM_User)session.createSQLQuery(hql)
.setParameter(0, username).setParameter(1, password);
tx.commit();
return user;
}


CRM_User:


// 用户表id
private Integer user_id;
// 用户名(非空)
private String user_name;
// 用户真实姓名
private String user_realname;
// 用户密码(非空)
private String user_pwd;
// 用户权限 "0"系统管理员,"1"客户经理,"2"销售主管(非空)
private Integer user_power;
// 用户状态 "0"在职,"1"请假,"2病假","3"离职(非空)
private Integer user_condition;
// 用户电话
private String user_phone;
// 用户删除状态 "0"未删除,"1"已删除
private Integer user_isdel;


CRM_User.hbm.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.pb.bean.CRM_User" table="CRM_User">
<id name="user_id" type="java.lang.Integer">
<column name="USER_ID"  />
<generator class="sequence">
<param name="sequence">user_id_seq</param>
</generator>
</id>

<property name="user_name" type="java.lang.String">
<column name="USER_NAME" length="20" />
</property>
<property name="user_realname" type="java.lang.String">
<column name="USER_REALNAME" length="20"/>
</property>
<property name="user_pwd" type="java.lang.String">
<column name="USER_PWD" length="20"  />
</property>
<property name="user_power" type="java.lang.Integer">
<column name="USER_POWER"  not-null="true"/>
</property>
<property name="user_condition" type="java.lang.Integer">
<column name="USER_CONDITION" not-null="true" />
</property>
<property name="user_phone" type="java.lang.String">
<column name="USER_PHONE"  />
</property>
<property name="user_isdel" type="java.lang.Integer">
<column name="USER_ISDEL" not-null="true" />
</property>
</class>

</hibernate-mapping>

------ Solution ------------------------------------- -------
String hql = "from CRM_User as 1 where 1.user_name =? and 1.user_pwd =? and 1.user_isdel = 0" ;
CRM_User user = (CRM_User) session. createSQLQuery (hql)
------ Solution -------------------- ------------------------
you write hql statement , using sql query
------ Solution --- -----------------------------------------
CRM_User user=(CRM_User)session.createSQLQuery(hql)
            .setParameter(0, username).setParameter(1, password);


see for yourself how others SQLQuery is used .
------ Solution ---------------------------------------- ----
executing query session.createSQLQuery (hql). setParameter (0, username). setParameter (1, password); List collection should be returned now !
------ Solution ------------------------ --------------------
return list, List list = session.createQuery (hql). setParameter (0 , username). setParameter (1, password). list ();

------ Solution ---------------------------------- ----------
CRM_User user = (CRM_User) session.createQuery (hql). setParameter (0, username). setParameter (1, password). uniqueResult () ;
------ For reference only ------------------ ---------------------
replaced by :

String hql="from CRM_User as cu where cu.user_name=? and cu.user_pwd=? and cu.user_isdel=0";
CRM_User user=(CRM_User)session.createQuery(hql).setParameter(0, username).setParameter(1, password);

also reported the same mistakes ....
------ For reference only ------------------------- --------------
amount get ! Should be . UniqueResult () and . List () problem Thank you ah
------ For reference only ---------------------------------------

没有评论:

发表评论