IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

select tout simple


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Par défaut select tout simple
    Bonjour,

    J'utilise JPA avec GWT.
    J'ai créé cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @SuppressWarnings("unchecked")
    	public List<Person> getAllUsers() {
    		EntityManager em = EMF.get().createEntityManager();
    		try {
    			Query query = em.createQuery("SELECT p FROM " + Person.class.getName() + " p");
    			return (List<Person>)query.getResultList();
    		} finally {
    	        em.close();
    	    }
    	}
    en debug sous eclipse, cette méthode me retourne un objet StreamingQueryResult de valeur:

    com.sun.jdi.InvocationException occurred invoking method.

    La requête vous parait correct?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 33
    Par défaut
    Je pense que tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return em.createQuery("select from " + Person.class.getName()).getResultList();
    qui devrait fonctionner.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Par défaut
    Merci pour ta réponse.

    J'ai le même problème avec cette requête.

  4. #4
    Nouveau candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 2
    Par défaut
    Au lieu d'écrir la requête comme suit :
    "SELECT p FROM " + Person.class.getName() + " p",
    mieu vaut faire ca :
    "SELECT p FROM Person p"
    car Person.class.getName() retourne le nom complet de la classe avec celui du pacquage.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Par défaut
    dans ce cas, comment est fait le mapping entre la classe Person persistée et le Person de la requete?

    Parce que j'obtiens cette exception :

    org.datanucleus.exceptions.ClassNotResolvedException: Person
    javax.persistence.PersistenceException: Person

    Trace :

    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
    42
    43
    44
    45
    46
    47
    48
    49
     
    com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.lang.Boolean com.picon.arnotjevleesch.client.services.LoginService.login(java.lang.String,java.lang.String)' threw an unexpected exception: javax.persistence.PersistenceException: Person
    	at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:360)
    	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:546)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:166)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
    	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:306)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    	at org.mortbay.jetty.Server.handle(Server.java:313)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
    Caused by: javax.persistence.PersistenceException: Person
    	at org.datanucleus.jpa.NucleusJPAHelper.getJPAExceptionForNucleusException(NucleusJPAHelper.java:276)
    	at org.datanucleus.jpa.JPAQuery.getResultList(JPAQuery.java:169)
    	at com.picon.arnotjevleesch.server.data.BoUser.getAllUsers(BoUser.java:37)
    	at com.picon.arnotjevleesch.server.LoginServiceImpl.login(LoginServiceImpl.java:26)
    	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 com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527)
    	... 25 more
    Caused by: org.datanucleus.exceptions.ClassNotResolvedException: Person
    	at org.datanucleus.util.Imports.resolveClassDeclaration(Imports.java:194)
    	at org.datanucleus.query.compiler.JavaQueryCompiler.compileFrom(JavaQueryCompiler.java:209)
    	at org.datanucleus.query.compiler.JPQLCompiler.compile(JPQLCompiler.java:72)
    	at org.datanucleus.store.query.AbstractJPQLQuery.compileInternal(AbstractJPQLQuery.java:242)
    	at org.datanucleus.store.query.Query.executeQuery(Query.java:1430)
    	at org.datanucleus.store.query.Query.executeWithMap(Query.java:1367)
    	at org.datanucleus.jpa.JPAQuery.getResultList(JPAQuery.java:153)
    	... 32 more

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Par défaut
    Ce qui est étonnant c'est que cette méthode me retourne un résultat sans erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public Integer getNbOfUsersByFirstName(String firstName){
    		EntityManager em = EMF.get().createEntityManager();
    		try {
    			Query query = em.createQuery("SELECT count(id) FROM " + Person.class.getName() + " WHERE firstName = :firstName");
    			query.setParameter("firstName", firstName);
    			return (Integer)query.getSingleResult();
    	    } finally {
    	        em.close();
    	    }
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. select tout simple
    Par arnobidul dans le forum GWT et Vaadin
    Réponses: 8
    Dernier message: 25/05/2009, 14h16
  2. un select tout simple
    Par cladsam dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/10/2007, 14h53
  3. [debutant] Frame tout simple ?
    Par Invité dans le forum JBuilder
    Réponses: 1
    Dernier message: 05/07/2005, 16h00
  4. un algo tout simple de randomisation (enfin, j'espere)
    Par orichimaru dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 30/11/2004, 22h15
  5. [langage] Problème tout simple
    Par marouanitos dans le forum Langage
    Réponses: 5
    Dernier message: 24/09/2003, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo