java.lang.ClassCastException: java.lang.Integer не может быть приведен - PullRequest
0 голосов
/ 10 января 2011

Когда я нажимаю на логин, он проверяет БД, если есть соответствующее значение, тогда я получаю эту ошибку, иначе он выводит меня null .

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.isEmpty()) {            
         }
         else if (resultsList.size() > 1) {

         }
         else {
           Login login1 = (Login) resultsList.get(0);
           System.out.println("Hello" + login1);
           return login1;
         }       
       return null;  
}

Ошибка ниже

Причина: java.lang.ClassCastException: java.lang.Integer не может быть приведен к com.intermedix.domain.Login на com.vaadin.event.ListenerMethod.receiveEvent (ListenerMethod.java:507) на com.vaadin.event.EventRouter.fireEvent (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.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.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:34) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at 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.proceed (ReflectiveMethodInvocation.java:149) в 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) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) на com.vaadin.event.ListenerMethod.receiveEvent (ListenerMethod.java:487) ... еще 26

Ответы [ 2 ]

6 голосов
/ 10 января 2011

Возможно, вы хотите SELECT l (L-буква), а не SELECT 1 (число 1)?Когда вы выбираете номер, номер возвращается.Следовательно, Integer

Или, если это 1 означает ограничение, используйте query.setMaxResults(1)

1 голос
/ 10 января 2011

ваш список должен быть логин

List<Login> resultList = (getHibernateTemplate().find(query,parameters);

тогда, когда вы сделаете это:

Login login1 = (Login) resultsList.get(0);

вы получите Экземпляр логина и не будете пытаться разыгрывать что-либо, кроме Объекта логина к себе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...