错误:java.lang.ClassCastException

错误:java.lang.ClassCastException,java,hibernate,spring,Java,Hibernate,Spring,更新整个帖子 public Login authenticate(Login login) { String query = "SELECT 1 FROM Login AS l WHERE l.email=? AND l.password=?"; Object[] parameters = { login.getEmail(), login.getPassword() }; List resultsList = getHibernateTempla

更新整个帖子

public Login authenticate(Login login) {
        String query = "SELECT 1 FROM Login AS l WHERE l.email=? AND l.password=?";
        Object[] parameters = { login.getEmail(), login.getPassword() };
        List resultsList = getHibernateTemplate().find(query,parameters);
        if ( resultsList.size() == 1 ) {
        results = (Login)resultsList.get(0);
        System.out.println(results);
        } else {
            System.out.println("Error dude.... ");
        // error no entity or mutiple entities
        }
        return results;
}
我现在返回登录对象

private void checkLogin() {
        form.commit();

        Login newUser = new Login();
        newUser = ilogin.authenticate(loginbean);
        System.out.println("Its Null Value" + newUser);
        if (newUser == null) {
            getWindow().showNotification("Login failed", LOGIN_ERROR_MSG,
                    Notification.TYPE_WARNING_MESSAGE);
        } else {
            System.out.println(newUser);
            getApplication().setUser(newUser);
        }
    }
当没有匹配的电子邮件时,我发现没有这样的用户,并且这个声明也会被打印出来
System.out.println(“其空值”+newUser)

但当存在电子邮件和密码匹配时。我犯了一个奇怪的错误

原因:java.lang.ClassCastException: 无法将java.lang.Integer强制转换为 com.intermedix.domain.Login 位于com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:507) 在com.vaadin.event.EventRouter.firevent(EventRouter.java:161)上 位于com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1154) 位于com.vaadin.ui.Button.fireClick(Button.java:371) 位于com.vaadin.ui.Button.changeVariables(Button.java:193) 位于com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1094) 在com.vaadin.terminal.gwt.server.AbstractCommunicationManager.dohandleuidRequest(AbstractCommunicationManager.java:590)上 在com.vaadin.terminal.gwt.server.CommunicationManager.handleuidRequest上(CommunicationManager.java:266) 位于com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:476) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) 位于org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 位于org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 位于org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 位于org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 位于org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) 位于org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 位于org.mortbay.jetty.Server.handle(Server.java:326) 位于org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 位于org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943) 位于org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) 位于org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 位于org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 位于org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) 位于org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 原因: java.lang.ClassCastException: 无法将java.lang.Integer强制转换为 com.intermedix.domain.Login 位于com.intermedix.services.LoginService.authenticate(LoginService.java:31) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机 (方法) 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 位于org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301) 位于org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) 位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:149) 位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) 位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:171) 位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 在$Proxy32处。验证(未知源) 位于com.intermedix.ui.LoginDailog.checkLogin(LoginDailog.java:106) 位于com.intermedix.ui.LoginDailog.access$0(LoginDailog.java:102) 点击com.intermedix.ui.LoginDailog$1.button(LoginDailog.java:52) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机 (方法) 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 位于com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:487) ... 26多

更新

我的登录bean类

package com.intermedix.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="users")
public class Login {
      public Login(){}
        private Long id = null;
        private String email;
        private String password;

        public Login(String email, String password)
        {
            this.email = email;
            this.password = password;
        }

        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        public Long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;

        }
}

而且我也根据查询进行了更新。

当您执行以下查询时

选择email,id FROM Login,其中email=?密码=

您要求Hibernate从
Login
实体中为您提供特定属性
email
id
。然后Hibernate将以数组列表的形式向您提供结果,每个列表项表示
[email,id]
数组

如果您只想查询所有符合条件的
登录
实体,请执行以下操作:

来自登录,其中电子邮件=?密码=

然后,结果列表将包含
Login
对象

但至于你为什么尝试转换到
LoginService
,我一点也不知道。您混淆了许多不同的Hibernate概念,并试图将它们混合在一起

我并不是说听起来没有帮助,但我认为您确实需要正确阅读Hibernate文档,更好地掌握您正在做的事情。

尝试替换以下内容:

 return (LoginService) results.get(0);
为此:

 return (Login) results.get(0);
假设
Login
是一个正确映射的hibernate实体,它应该可以工作

游寿
String query = "SELECT 1 FROM Login AS l WHERE l.email=? AND l.password=?";
String query = "SELECT login FROM Login AS login WHERE login.email=? AND login.password=?";
   List results = createQuery(
     "SELECT l FROM login AS l WHERE l.email=:email AND l.password=:password")
     .setParameter("email",login.getEmail())
     .setParameter("password",login.getPassword()).list();
   if (results.isEmpty()) {
     //.. login failed
   } else if (result.size() > 1) {
     throw new SomethingWrongException();
   } else {
     Login login = (Login) results.get(0);
   }
String query = "SELECT l FROM Login AS l WHERE l.email=? AND l.password=?";