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 :

Requête JPA et requête SQL ne donnent pas le même résultat


Sujet :

JPA Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 108
    Points : 54
    Points
    54
    Par défaut Requête JPA et requête SQL ne donnent pas le même résultat
    Bonjour,
    je travaille sur un projet JPA et je ne maîtrise pas vraiment ce framework, j'ai besoin de créer une requête qui m'importe des ventes, lorsque je la teste sur mon programme j’obtiens une liste et lorsque je la teste directement su ma base de donnes j’obtiens une liste qui n'est pas de même longueur!

    voila ma requête JPA :
    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
    OrderStatus orderstatus = OrderStatus.Invoiced;
            Activity act = saleSearch.getActivity();
            Calendar dtCreateFrom = saleSearch.getDtCreationFrom();
            Calendar dtTo = saleSearch.getDtCreationTo();        
            Calendar dtCreateTo = dtTo;
            dtCreateTo.add(Calendar.DAY_OF_YEAR, 1);        
     
            Query query = em().createQuery("SELECT s FROM Sale s "+
            						"		INNER JOIN s.offer o"+
            						"		INNER JOIN s.order ord"+
            						"		INNER JOIN o.product p"+
            						"		WHERE o.activityId=:act"+           
            						"		AND ord.orderDate BETWEEN :dtCreateFrom AND :dtCreateTo"+   
            						"		AND ord.orderStatus =:status");        
            query.setParameter("status", orderstatus);
            query.setParameter("act", act.getId());
            query.setParameter("dtCreateFrom", dtCreateFrom);
            query.setParameter("dtCreateTo", dtCreateTo);       
            salesExpo = query.getResultList();   
            dtCreateTo.add(Calendar.DAY_OF_YEAR, -1);
    et voila la requête sql que je test directement sur la base de donnes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT PRODUCTS.refproducts,SALES.PRODUCTPRICE, PRODUCTS.Name, OFFERS.Price,SUM(SALES.quantity), SUM(SALES.quantity * OFFERS.Price)
    FROM PRODUCTS
    INNER JOIN OFFERS ON PRODUCTS.refproducts = OFFERS.refproducts
    INNER JOIN SALES ON OFFERS.refOffers = SALES.refOffers
    INNER JOIN ORDERS ON ORDERS.reforders = SALES.reforders
    WHERE ORDERS.OrderStatus = 'invoiced'
    AND (ORDERS.dateorder BETWEEN '2011-04-15 00:00:00' AND '2011-04-16 00:00:00')
    AND OFFERS.refactivities = 1
    GROUP BY PRODUCTS.refproducts, PRODUCTS.Name, OFFERS.Price, SALES.PRODUCTPRICE
    ORDER BY PRODUCTS.refproducts
    bien sur je fais saisir les mêmes valeurs de date d’après ma page web pour la première requête.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Le mieux est d'activer les logs de JPA pour voir quel est la requête SQL passée.
    En fonction de ton implémentation (Hibernate, EclipseLink), active les logs.
    Pour hibernate par exemple, ajouter hibernate.show_sql=true dans le persistence.xml ou au moment de la configuration d'Hibernate.

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/03/2015, 21h12
  2. Réponses: 3
    Dernier message: 29/01/2015, 13h45
  3. Requêtes similaires ne donnant pas le même résultat
    Par Annsen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/01/2012, 14h25
  4. Réponses: 10
    Dernier message: 18/05/2011, 14h56
  5. Réponses: 5
    Dernier message: 26/08/2009, 15h40

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