bjornoss Skrevet 10. mars 2007 Rapporter Del Skrevet 10. mars 2007 Heisann folkens, noen med peiling på Spring Framework og Hibernate der ute? Jeg har brukt Spring 1.2 og Hibernate 2.1 i en god stund men nå har jo Spring 2.0 og Hibernate 3 kommet så jeg ønsker å oppgradere. Har i den forbindelse støtt på en del problemer, de fleste har jeg løst men dette må jeg ha hjelp til. System: DB: PostgreSQL 8.2 Tomcat 5.5 Spring Framework 2.0.2 Hibernate 3.2.2 Jeg forsøker å hente ut noe salgsdata med følgende HQL: select new no.gep.mediaport.util.statistics.StatsDataSales(si .sale.time, si.sale.clientLocation.country, si.sale.clientLocation.city, si.sale.currency, si.publication, si.product, si.sale.payMethod, si.amount) from no.gep.mediaport.bus.SaleItem as si where si.sale.time between :from and :to and si.sale.payMethod != :bar Når denne kjøres så får jeg følgende Exception: Klikk for å se/fjerne innholdet nedenfor org.postgresql.util.PSQLException: ERROR: invalid reference to FROM-clause entry for table "saleitem0_"at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:437) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:257) at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) at org.hibernate.loader.Loader.getResultSet(Loader.java:1778) at org.hibernate.loader.Loader.doQuery(Loader.java:662) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.doList(Loader.java:2211) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095) at org.hibernate.loader.Loader.list(Loader.java:2090) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:870) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:367) at org.springframework.orm.hibernate3.HibernateTemplate.findByNamedParam(HibernateTemplate.java:861) at no.gep.mediaport.dao.hibernate.MiscDAOImpl.getStatisticsDataSales(MiscDAOImpl.java:53) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210) at $Proxy273.getStatisticsDataSales(Unknown Source) at no.gep.mediaport.util.statistics.StatisticsUtil.getStatisticsSales(StatisticsUtil.java:45) at no.gep.mediaport.util.statistics.StatisticsUtil.getStatistics(StatisticsUtil.java:34) at no.gep.mediaport.web.provider.StatsController.onSubmit(StatsController.java:85) at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267) at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:250) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:755) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:360) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at no.gep.mediaport.filter.CommonFilter.doFilterInternal(CommonFilter.java:172) at no.gep.mediaport.filter.MediaPortFilter.doFilter(MediaPortFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at no.gep.mediaport.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:136) at no.gep.mediaport.filter.MediaPortFilter.doFilter(MediaPortFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at no.gep.mediaport.filter.SecurityFilter.doFilterInternal(SecurityFilter.java:274) at no.gep.mediaport.filter.MediaPortFilter.doFilter(MediaPortFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at no.gep.mediaport.filter.CompatFilter.doFilterInternal(CompatFilter.java:64) at no.gep.mediaport.filter.MediaPortFilter.doFilter(MediaPortFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:495) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) Dette har altså funket fint før men ikke nå lenger. Jeg forsøkte å kopiere spørringen og kjøre den manuelt med PostgreSQL men fikk samme resultat: select sale1_.sale_time as col_0_0_, sale1_.country_code as col_1_0_, sale1_.cl_city as col_2_0_, sale1_.currency_code as col_3_0_, saleitem0_.pub_id as col_4_0_, saleitem0_.product_id as col_5_0_, sale1_.sale_pay_method as col_6_0_, saleitem0_.saleitem_amount as col_7_0_ from saleitem saleitem0_, sale sale1_ inner join country country3_ on sale1_.country_code=country3_.country_code inner join currency currency6_ on sale1_.currency_code=currency6_.currency_code inner join publication publicatio7_ on saleitem0_.pub_id=publicatio7_.id inner join product product8_ on saleitem0_.product_id=product8_.product_id where saleitem0_.sale_id=sale1_.sale_id and (sale1_.sale_time between '2007-02-01' and '2007-03-01') and sale1_.sale_pay_method<>3 order by sale1_.sale_time; ERROR: invalid reference to FROM-clause entry for table "saleitem0_" HINT: There is an entry for table "saleitem0_", but it cannot be referenced from this part of the query. Men hvis jeg flytter saleitem joiningen slik (uthevet) så forsvinner problemet: select sale1_.sale_time as col_0_0_, sale1_.country_code as col_1_0_, sale1_.cl_city as col_2_0_, sale1_.currency_code as col_3_0_, saleitem0_.pub_id as col_4_0_, saleitem0_.product_id as col_5_0_, sale1_.sale_pay_method as col_6_0_, saleitem0_.saleitem_amount as col_7_0_ from saleitem saleitem0_ inner join publication publicatio7_ on saleitem0_.pub_id=publicatio7_.id inner join product product8_ on saleitem0_.product_id=product8_.product_id, sale sale1_ inner join country country3_ on sale1_.country_code=country3_.country_code inner join currency currency6_ on sale1_.currency_code=currency6_.currency_code where saleitem0_.sale_id=sale1_.sale_id and (sale1_.sale_time between '2007-02-01' and '2007-03-01') and sale1_.sale_pay_method<>3 order by sale1_.sale_time; col_0_0_ | col_1_0_ | col_2_0_ | col_3_0_ | col_4_0_ | col_5_0_ | col_6_0_ | col_7_0_ -------------------------+----------+----------+----------+----------+----------+----------+---------- 2007-02-03 18:18:12.194 | NO | OSLO | NOK | 214 | 1 | 0 | 15 2007-02-03 18:18:12.194 | NO | OSLO | NOK | 241 | 1 | 0 | 12 Det virker som det blir generert feil SQL til HQL'en jeg bruker. Men spørsmålet er da om dette er en bug i Hibernate? eller om jeg skulle endret noe som jeg ikke har gjort? Hvis noen trenger flere opplysninger så skal jeg legge ut det... På forhånd takk. -bjornoss Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå