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

Hibernate Java Discussion :

Problème de type de retour HQL, java


Sujet :

Hibernate Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Problème de type de retour HQL, java
    Bonjour tout le monde,
    Je sais pas est ce que c'est le bon endroit pour postulé,
    voici le problème
    j'ai une fonction qui permet de me sortir le count de 2 attribut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public List<Long> searchAnomByStatEmis(List<Long> idsChannel,String annee) {
     
    			TypedQuery<Long> queryEmis = entityManager.createQuery(
    			           "SELECT count(id), to_char(c.dateCreation,'MM') FROM AnomalieEntity c WHERE c.channel.id IN (:ids) and to_char(c.dateCreation,'YYYY') = :annee "
    			           + "group by to_char(c.dateCreation,'MM')", Long.class);
    				 queryEmis.setParameter("ids", idsChannel);
    				 queryEmis.setParameter("annee", annee);
     
    		 return queryEmis.getResultList();
     
     
    	}
    le problème c'est que le type de retour !
    est ce que y'a une solution pour qu'il me sort les count des 2 attribut ?
    merci

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    j'ai aussi modifier la type de retour en List<Map>:
    comme suit, mais je sais pas est ce que c'est au niveau de la réquéte hql qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TypedQuery<Map> queryEmis = entityManager.createQuery(
    			           "SELECT new map(count(c.id) as count, to_char(c.dateCreation,'MM') as mois) FROM AnomalieEntity c WHERE c.channel.id IN (:ids) and to_char(c.dateCreation,'YYYY') = :annee"
    			           + "group by to_char(c.dateCreation,'MM')", Map.class);
    				 queryEmis.setParameter("ids", idsChannel);
    				 queryEmis.setParameter("annee", annee);
     
    				 List<Map> rt = queryEmis.getResultList();
     
    				 return rt;
    Le message d'erreur de postman :
    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
    50
    51
    52
    53
    54
    55
    <b>Stack Trace</b>
            <br/>org.jboss.resteasy.spi.UnhandledException: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: by near line 1, column 193 [SELECT new map(count(c.id) as count, to_char(c.dateCreation,'MM') as mois) FROM fr.skf.ra.entity.AnomalieEntity c WHERE c.channel.id IN (:ids) and to_char(c.dateCreation,'YYYY') = :anneegroup by to_char(c.dateCreation,'MM')]
            <br/>org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:77)
            <br/>org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:220)
            <br/>org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:175)
            <br/>org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:418)
            <br/>org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:209)
            <br/>org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
            <br/>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
            <br/>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
            <br/>javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
            <br/>io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
            <br/>io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
            <br/>fr.skf.ra.filters.CrossOriginFilter.doFilter(CrossOriginFilter.java:35)
            <br/>io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            <br/>io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            <br/>io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
            <br/>io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
            <br/>io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
            <br/>org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
            <br/>io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
            <br/>io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
            <br/>io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
            <br/>io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
            <br/>io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
            <br/>io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
            <br/>io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
            <br/>io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
            <br/>io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
            <br/>io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
            <br/>io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
            <br/>org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
            <br/>io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
            <br/>io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
            <br/>io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
            <br/>io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
            <br/>io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
            <br/>io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
            <br/>io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
            <br/>io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
            <br/>io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
            <br/>io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
            <br/>io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
            <br/>io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
            <br/>io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
            <br/>io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
            <br/>io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
            <br/>io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
            <br/>io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
            <br/>io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
            <br/>io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
            <br/>java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
            <br/>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
            <br/>java.lang.Thread.run(Thread.java:748)
            <br/>

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    as-tu été voir ce qui se passait du coté de ta colonne 193 de ta requête affichée dans l'exception?


    = :anneegroup by to_char
    ll manque un espace entre annee et group.


    Ensuite pour ta question d'origine, qu'est-ce que tu appelle 'le count de deux attribut'? Count va juste te sortir le nombre de ligne regroupées par un group by.

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre réponse,
    En effet il manque un espace, je l'es corriger
    ce que je veut faire c'est de sortir le nombre d'une ligne de table par critère
    j'ai changer le type de retour en map : il m'affiche en Json par appel au service comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [
        {
            "count": 1,
            "mois": "04"
        },
        {
            "count": 1,
            "mois": "05"
        }
    ]
    comment je peut faire pour que ma fonction me sort le résultat de 2 requête ?
    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
     
    TypedQuery<Map> queryEmis = entityManager.createQuery(
    			           "SELECT new map(count(c.id) as count, to_char(c.dateCreation,'MM') as mois) FROM AnomalieEntity c WHERE c.channel.id IN (:ids) and to_char(c.dateCreation,'YYYY') = :annee"
    			           + "group by to_char(c.dateCreation,'MM')", Map.class);
    TypedQuery<Map> queryTrait = entityManager.createQuery(
    				"SELECT new map(count(c.id) as count, to_char(c.dateCreation,'MM') as mois) FROM AnomalieClosureEntity a, AnomalieEntity c"
    						+ " WHERE a.id=c.id and c.channel.id IN (:ids) and to_char(c.dateCreation,'YYYY') = :annee"
    								+ " group by to_char(a.dateClosure,'MM')",Map.class);
    				 queryEmis.setParameter("ids", idsChannel);
    				 queryEmis.setParameter("annee", annee);
     
    				 List<Map> re = queryEmis.getResultList();
                                     List<Map> rt = queryTrait.getResultList();
     
                                     //return ??
                                      // type de retour de la fonction ?
    des idées ?

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

Discussions similaires

  1. Probléme de Casting d'un type de retour java
    Par KnowPart dans le forum SQL
    Réponses: 2
    Dernier message: 15/12/2010, 15h42
  2. Probléme de Casting d'un type de retour java
    Par KnowPart dans le forum JDBC
    Réponses: 0
    Dernier message: 15/12/2010, 12h59
  3. Réponses: 10
    Dernier message: 17/06/2009, 17h05
  4. Problème de type de données entre Java et Postgres
    Par La Piotte dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 31/01/2008, 20h23
  5. [JAVA]Problème de type date avec oracle Sous Ireport
    Par lazarel dans le forum iReport
    Réponses: 5
    Dernier message: 27/07/2007, 10h45

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