0

I'm getting an error on casting. I don't know how to fix it

  • springMVC collections
  • hibrnate 4.3.5

Exception :

    type Rapport d''exception

message Request processing failed; nested exception is java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.String

description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.String
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
cause mère

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.String
    org.hibernate.type.descriptor.java.StringTypeDescriptor.unwrap(StringTypeDescriptor.java:39)
    org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$1.doBind(VarcharTypeDescriptor.java:64)
    org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90)
    org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:286)
    org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:281)
    org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:67)

and my UserDao.java

public boolean checkLogin(User user) {
    String hql = "FROM User u WHERE u.username = :username and u.password = :password";
    Query query = sessionFactory.openSession().createQuery(hql);
    query.setParameter("username", user.getClass());
    query.setParameter("password", user.getPassword());
    int result;
    query.setMaxResults(1);
    result = query.list().size();

    if(result < 1) {
        return false;
    } else{
        return true;
    }
}
3
  • Could you paste your entité code PLEASE ? Commented Jul 5, 2014 at 16:22
  • My table user : CREATE TABLE IF NOT EXISTS user ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(45) DEFAULT NULL, password varchar(45) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; Commented Jul 5, 2014 at 16:29
  • Please add additional details to the original question by using the edit feature Commented Jul 5, 2014 at 16:41

1 Answer 1

2

query.setParameter("username", user.getClass()); may be the cause of the problem.

Try following:

query.setParameter("username", user.getUsername());

I am assuming your User class has getUsername() method.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.