错误:java.lang.ClassCastException

the*_*ava 0 java spring hibernate

更新整个帖子.

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;
}
Run Code Online (Sandbox Code Playgroud)

我现在返回登录对象.

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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

当没有匹配的电子邮件时,我知道没有这样的用户,并且此语句也会打印出来. System.out.println("Its Null Value" + newUser);

但是当有电子邮件和密码匹配时.我得到了奇怪的错误.

原因:java.lang.ClassCastException:java.lang.Integer无法在com.vaadin.event.EventRouter的com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:507)中强制转换为com.intermedix.domain.Login. fireEvent(EventRouter.java:161)at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1154)at com.vaadin.ui.Button.fireClick(Button.java:371)at com.vaadin.ui.Button .changeVariables(Button.java:193)在com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1094)在com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:590 )在com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(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.j)ava:511)org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)atg.mortbay.jetty.servlet .sessionHandler.handle(SessionHandler.java:182)org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)atg.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)at 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)atg.mortbay.jetty.HttpConnection $ RequestHandler .content(HttpConnection.java:943)位于org.mortbay的org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218).orm.mortbay.thread.QueuedThreadPool上的org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)中的jetty.HttpConnection.handle(HttpConnection.java:404)$ PoolThread.run(QueuedThreadPool.java:582)引起:java.lang.ClassCastException:java.lang.Integer无法在sun.reflect.NativeMethodAccessorImpl.invoke0的com.intermedix.services.LoginService.authenticate(LoginService.java:31)中强制转换为com.intermedix.domain.Login. (本机方法)在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)at org.springframework.aop.framework.ReflectiveMethodInvocation.继续(ReflectiveMethodInvocation.java:149)a 吨org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)在org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:204)在$ Proxy32.authenticate(未知来源)的com.intermedix.ui.LoginDailog.checkLogin(LoginDailog.java:106)com.intermedix.ui.LoginDailog.access $ 0(LoginDailog.java:102) )在com.intermedix.ui.LoginDailog $ 1.buttonClick(LoginDailog.java:52)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在sun.reflect .delegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at 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;

        }
}
Run Code Online (Sandbox Code Playgroud)

并且我根据raplh查询更新.

ska*_*man 6

当您执行类似的查询时

SELECT email,id FROM Login WHERE email =?和密码=?

你问Hibernate来给你的具体性能emailidLogin实体.然后,Hibernate会将结果作为数组列表提供给您,每个列表项代表[email, id]数组.

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

FROM登录WHERE email =?和密码=?

然后您的结果列表将包含Login对象.

但至于你为什么要施展LoginService,我没有任何线索.你混淆了许多不同的Hibernate概念并试图将它们混合在一起.

我并不是说没有帮助,但我认为你真的需要去正确阅读Hibernate文档,并更好地掌握你正在做的事情.