C
cwiesing
Gast
Hallo Zusammen,
ich versuche mich gerade an Hibernate und habe ein "kleines" Problem mit einer Hibernate-Abfrage.
Folgendes Szenario:
Es gibt eine Klasse Appointment, welche ein Attribut owner von Typ User besitzt. Des weiteren gibt es eine Klasse Project, die ein Liste (Set) projectmembers besitzt.
Project und Appointment besitzt keine direkte Beziehung zu einander. Ich brauche nun eine Abfrage, die mir alle Appointment zu einem Project zurückgibt. Also muss ich über die projectmembers gehen.
Ich habe es bisher wie folgt versucht:
Bekomme aber immer folgende eine Exception:
Was mache ich falsch und wie mache ich es richtig?
Danke!
Gruß, Christian
ich versuche mich gerade an Hibernate und habe ein "kleines" Problem mit einer Hibernate-Abfrage.
Folgendes Szenario:
Es gibt eine Klasse Appointment, welche ein Attribut owner von Typ User besitzt. Des weiteren gibt es eine Klasse Project, die ein Liste (Set) projectmembers besitzt.
Project und Appointment besitzt keine direkte Beziehung zu einander. Ich brauche nun eine Abfrage, die mir alle Appointment zu einem Project zurückgibt. Also muss ich über die projectmembers gehen.
Ich habe es bisher wie folgt versucht:
Code:
from Appointment a where a.owner in elements(select p.members from Project p where p.id = ?)
Bekomme aber immer folgende eine Exception:
Code:
org.hibernate.hql.ast.QuerySyntaxException:
expecting CLOSE, found 'p' near line 1, column 70
[from de.mac.hibernate.Appointment a where a.owner in elements(select p.members from de.mac.hibernate.Project p where p.id = 1)]
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
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.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy0.createQuery(Unknown Source)
at de.mac.service.AppointmentService.getAllAppointmentsFromProject(AppointmentService.java:54)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:58)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
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.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
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)
Was mache ich falsch und wie mache ich es richtig?
Danke!
Gruß, Christian