Bonjour,
J'ai cherché sur Internet, mais je n'ai pas trouvé de solution à mon problème. Je souhaite faire une jointure entre deux entités :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Entity public class Modele { private Long id; private Long marque; [...] }Je précise que mon application tourne sous Google App Engine et que cela abouti à certaines restrictions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Entity public class Marque { private Long id; private String label; [...] }
J'ai essayé ceci :
Mais j'obtiens un NullPointerException. Il semble que ce problème soit dû à l'implémentation JPA utilisée dans Google App Engine. Pour info, voici la trace :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select modele from Modele modele, Marque marque where modele.marque = marque.id and marque.label = :marque
Je n'arrive pas à contourner ce problème. Je ne suis pas calé avec JPA, alors pourriez-vous m'aider à écrire ma requête de jointure please ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 java.lang.NullPointerException at org.datanucleus.store.appengine.query.DatastoreQuery.getSortProperty(DatastoreQuery.java:788) at org.datanucleus.store.appengine.query.JoinHelper.executeJoinQuery(JoinHelper.java:64) at org.datanucleus.store.appengine.query.DatastoreQuery.executeQuery(DatastoreQuery.java:268) at org.datanucleus.store.appengine.query.DatastoreQuery.performExecute(DatastoreQuery.java:239) at org.datanucleus.store.appengine.query.JPQLQuery.performExecute(JPQLQuery.java:77) at org.datanucleus.store.query.Query.executeQuery(Query.java:1489) at org.datanucleus.store.query.Query.executeWithMap(Query.java:1398) at org.datanucleus.jpa.JPAQuery.getResultList(JPAQuery.java:163) at fr.hadf.batterie.dao.BackOfficeDAOImpl.getListModeles(BackOfficeDAOImpl.java:51) at fr.hadf.batterie.backoffice.page.ListModeles.init(ListModeles.java:39) at fr.hadf.framework.core.FrameworkServlet.doPost(FrameworkServlet.java:78) at fr.hadf.framework.core.FrameworkServlet.doGet(FrameworkServlet.java:23) at javax.servlet.http.HttpServlet.service(HttpServlet.java:693) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Partager