-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: HQL select collections in a new map
PostPosted: Mon Jun 16, 2008 2:56 am 
Newbie

Joined: Mon Apr 23, 2007 7:29 am
Posts: 4
Location: Berlin (Germany)
Hello,

I've a question selecting collections in a new map hql statement what doesn't work, in opposite to select a collection without the new map option.
I'm using Hibernate 3.2.6 .

I've 2 simple classes:

<class name="xyz.RegisteredPerson"
table="registered_person" node="RegisteredPerson">
...
<list name="ContactDatas" cascade="all,delete-orphan"
embed-xml="true" node="ContactDatas">
<key column="registered_person_id" not-null="false" />
<list-index column="contact_data_idx" />
<one-to-many
class="xyz.ContactData" node="ContactData" />

</list>
...
</class>

<class name="xyz.ContactData"
table="contact_data" node=".">

<id name="id" column="contact_data_id" type="java.lang.Long"
unsaved-value="null" node="@id">

<generator class="sequence">
<param name="sequence">elefand_contact_data_seq</param>
</generator>

</id>

<property name="type" not-null="true" type="java.lang.String"
node="@type" />

<property name="value" not-null="true" type="java.lang.String"
node="@value" />

</class>



My HQL command is:
sf.getCurrentSession().createQuery("select new xyz.RegisteredPersonRow(r.ContactDatas) from RegisteredPerson r where r.id = something").list();:

Here my definition of the RegisteredPersonRow Object:

Code:
public class RegisteredPersonRow{

   private List<ContactData> contactDatas;

   public RegisteredPersonRow(List<ContactData> contactDatas) {
      this.contactDatas = contactDatas;
   }
   
public List<ContactData> getContactDatas() {
      return contactDatas;
   }

   public void setContactDatas(List<ContactData> contactDatas) {
      this.contactDatas = contactDatas;
   }
}


I got following Stack:
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2216)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
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 aa.elefand.dao.RegisteredPersonDao.test(RegisteredPersonDao.java:642)
at aa.elefand.dao.RegisteredPersonDao$$FastClassByCGLIB$$a0411b2.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
at aa.elefand.dao.RegisteredPersonDao$$EnhancerByCGLIB$$218fdb9.test(<generated>)
at aa.elefand.struts.admin.RegisteredPersonsAction.unspecified(RegisteredPersonsAction.java:59)
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.apache.struts.actions.ActionDispatcher.dispatchMethod(ActionDispatcher.java:362)
at org.apache.struts.actions.ActionDispatcher.dispatchMethod(ActionDispatcher.java:336)
at org.apache.struts.actions.ActionDispatcher.execute(ActionDispatcher.java:223)
at aa.elefand.struts.admin.RegisteredPersonsAction.execute(RegisteredPersonsAction.java:52)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at aa.elefand.common.SecurityFilter.doFilter(SecurityFilter.java:84)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.postgresql.util.PSQLException: FEHLER: Fehler »Syntaxfehler« bei ».«
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.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2213)


I'm using Postgresql 8.2.

The generated SQL Command is:
select . as col_0_0_ from registered_person registered0_ inner join contact_data contactdat1_ on registered0_.registered_person_id=contactdat1_.registered_person_id where registered0_.registered_person_id=2
what really don't work on the database

The Problem is, that no column is selected. I don't understand, why it's not possible to select a collection in a new map object.
Does anybody has an idea ? I found nothing in the documentation, that it is possible to select collections in a new map, but why should that not work ?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.