YAMJ / yamj-v3

Main Project for YAMJ v3
11 stars 7 forks source link

api error 500 with api/person/244.json?dataitems=filmography_inside&sortby=year&sortdir=asc #296

Closed jluc2808 closed 8 years ago

jluc2808 commented 8 years ago

i get an api error 500 with api/person/244.json?dataitems=filmography_inside&sortby=year&sortdir=asc this person is only inside series (no movies)

the log: [15.07.2016 07:37:40] INFO org.yamj.core.database.dao.ApiDao - Adding photo for 'Michael Sheen' [15.07.2016 07:37:40] INFO org.yamj.core.database.dao.ApiDao - Found 1 artworks [15.07.2016 07:39:49] INFO org.yamj.core.database.dao.ApiDao - Adding filmograpghy inside for 'Michael Sheen' [15.07.2016 07:39:49] INFO org.yamj.core.database.dao.ApiDao - Filmography inside SQL: SELECT DISTINCT 'MOVIE' as type, c1.job as job, c1.role as role, c1.voice_role as voiceRole, v1.title as title, v1.title_original as originalTitle, v1.publication_year as year, -1 as yearEnd,v1.release_date as releaseDate, v1.release_country_code as releaseCountryCode,v1.id as videoDataId, null as seriesId , null as description FROM cast_crew c1, videodata v1 WHERE c1.person_id = :id and v1.id=c1.videodata_id and v1.episode<0 UNION SELECT DISTINCT 'SERIES' as type, c2.job as job, c2.role as role, c2.voice_role as voiceRole, ser.title as title, ser.title_original as originalTitle, ser.start_year as year, ser.end_year as yearEnd,null as releaseDate, null as releaseCountryCode,null as videoDataId, ser.id as seriesId , null as description FROM cast_crew c2, videodata v2, season sea, series ser WHERE c2.person_id = :id and v2.id=c2.videodata_id and v2.episode>=0 and v2.season_id=sea.id and sea.series_id=ser.id ORDER BY year ASC, releaseDate ASC [15.07.2016 07:39:49] ERROR org.yamj.core.api.json.ApiExceptionHandler - Handle api exception java.lang.ClassCastException: org.yamj.core.api.model.dto.ApiFilmographyDTO cannot be cast to java.util.Map at org.hibernate.property.access.internal.PropertyAccessMapImpl$SetterImpl.set(PropertyAccessMapImpl.java:102) at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:78) at org.hibernate.hql.internal.HolderInstantiator.instantiate(HolderInstantiator.java:75) at org.hibernate.loader.custom.CustomLoader.getResultList(CustomLoader.java:435) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2422) at org.hibernate.loader.Loader.list(Loader.java:2417) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:336) at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1980) at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:322) at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:125) at org.yamj.core.hibernate.HibernateDao.executeQueryWithTransform(HibernateDao.java:505) at org.yamj.core.hibernate.HibernateDao.executeQueryWithTransform(HibernateDao.java:453) at org.yamj.core.database.dao.ApiDao.retrieveFilmography(ApiDao.java:1121) at org.yamj.core.database.dao.ApiDao.getPersonFilmographyInside(ApiDao.java:1049) at org.yamj.core.database.dao.ApiDao.getPerson(ApiDao.java:980) at org.yamj.core.database.dao.ApiDao$$FastClassBySpringCGLIB$$ecfc0837.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651) at org.yamj.core.database.dao.ApiDao$$EnhancerBySpringCGLIB$$decb2059.getPerson() at org.yamj.core.database.service.JsonApiStorageService.getPerson(JsonApiStorageService.java:176) at org.yamj.core.database.service.JsonApiStorageService$$FastClassBySpringCGLIB$$145385d0.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655) at org.yamj.core.database.service.JsonApiStorageService$$EnhancerBySpringCGLIB$$925ccdf4.getPerson() at org.yamj.core.api.json.PersonController.getPerson(PersonController.java:54) at sun.reflect.GeneratedMethodAccessor778.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496) at org.yamj.core.web.servlet.filter.JsonpCallbackFilter.doFilter(JsonpCallbackFilter.java:50) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1484) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1476) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:370) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Unknown Source)

modmax commented 8 years ago

The problem was not just for persons only inside series; it was a problem for every filmography due a misspelling error. This has been fixed with latest release.

Please note, that the field "videoDataId" in the results has changes to "videodataId" to use the same parameter in the whole api (reason: just im filmography it was called "videoDataId", anywhere else "videodataId"). Id the client skin uses the field "videoDataId" in order to jump to a movie, then it should fetch "videodataId" instead.