以下代码执行的时候发生错误,提示为:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.ClassManer.Hibernate.User应该是类型转换不了,不知道怎么解决public class LoginAction extends ActionSupport implements ServletRequestAware { private String username;
private String password;
private HttpServletRequest request; @Override
public String execute() throws Exception {
// SessionFactory sf=new AnnotationConfiguration().
// configure().buildSessionFactory();
try {
Configuration conf= new Configuration().configure();
SessionFactory sf =conf.buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();

username = this.getUsername();
password = this.getPassword();
String sqlQuery = "select u.* from user u where " + "u.username= '"
+ username + "'";
//session.createQuery(arg0)
Query lQuery = session.createSQLQuery(sqlQuery);
ArrayList<?> userlist = (ArrayList<?>) lQuery.list();
tx.commit();
session.close(); User user = new User();
if ((null != userlist) && (userlist.size() > 0)) {
user = (User) (userlist.get(0));
if (!user.getPassword().equals(password)) {
return "failer";
}
} else
return "failer";
} catch (HibernateException e) {
e.printStackTrace();
return "failer";
}
return "success";
} @Override
public void setServletRequest(HttpServletRequest arg0) {
// TODO Auto-generated method stub
} /**
 * @param password
 *            the password to set
 */
public void setPassword(String password) {
this.password = password;
} /**
 * @return the password
 */
public String getPassword() {
return password;
} /**
 * @param request
 *            the request to set
 */
public void setRequest(HttpServletRequest request) {
this.request = request;
} /**
 * @return the request
 */
public HttpServletRequest getRequest() {
return request;
} /**
 * @param username
 *            the username to set
 */
public void setUsername(String username) {
this.username = username;
} /**
 * @return the username
 */
public String getUsername() {
return username;
}}

解决方案 »

  1.   


    改为大写试试,查询所有的前面的select  可以不要吧、、、String sqlQuery = "from User u where " + "u.username= '"
    + username + "'";
      

  2.   

    user是表名,就是小写的
    sql语句去掉select之后出错了
      

  3.   

    观望下,你的sql语句很有特性,select * from user as u where username=u.getUsername();
      

  4.   


    改成大写,是根据hibernate配置的类对应的表来查询,返回值他就直接封装成这个对象了
    。这样把select 应该是可以去掉的
      

  5.   

    String sqlQuery = "select u.* from user u where " + "u.username= '"
    + username + "'";这里的user对应的是你的实体Bean名称 
      

  6.   


    多谢,刚开始学,才知道应该是实体Bean的名字,改成大写去掉Select之后,将
    Query lQuery = session.createSQLQuery(sqlQuery);
    改为
    Query lQuery = session.createQuery(sqlQuery);
    终于正确了。