Problème requête HQL. [Résolu]

Messages postés
34
Date d'inscription
jeudi 31 mai 2007
Dernière intervention
31 mars 2011
- 25 mars 2010 à 19:45 - Dernière réponse :
Messages postés
34
Date d'inscription
jeudi 31 mai 2007
Dernière intervention
31 mars 2011
- 25 mars 2010 à 21:59
Bonjour, Je travail actuellement sur une application J2EE avec STRUTS 1 et HIBERNATE.
Lors d'un rafraichissement d'une page, le contenu de la requête HQL change continuellement... Le jeu de donnée n'est pas modifier et pourtant sois la requête affiche tous, sois en partie... J'ai pensé à un problème de cache mais bon. Je n'arrive pas à trouver de solution donc je viens sur ce forum pour demander de l'aide. Si quelqu'un à déjà eu le problème et peux m'aider ce serais sympa.
Merci bien :).
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 25 mars 2010 à 21:36
3
Merci
Salut,

Ok, tu es sûr que les données sont bien écrites lorsque tu exécutes ta requête ?

Il n'y aurait pas une requête qui n'est pas flush par exemple ? Ou une transaction qui n'est pas commit ?

Tu utilises quel SGBD ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Meilleure réponse
Messages postés
34
Date d'inscription
jeudi 31 mai 2007
Dernière intervention
31 mars 2011
- 25 mars 2010 à 21:48
3
Merci
Merci DARKSIDIOUS pour ton aide! En effet le fait de flusher la session après execution d'un requête select à l'air de bien marcher!
Merci encore :).
Bonne soirée!

Merci Darktruff 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Darktruff
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 25 mars 2010 à 20:26
0
Merci
Salut,

Mets un point d'arrêt à l'endroit où tu exécute ta requête HQL et où tu récupère les données pour voir si toutes les données y sont où pas déjà pour voir si ca vient vraiment de la requête ou des autres couches de ton application.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
34
Date d'inscription
jeudi 31 mai 2007
Dernière intervention
31 mars 2011
- 25 mars 2010 à 21:05
0
Merci
Non ça vient bien de la requête... J'ai bouclé sur ma liste après avoir récupérer le contenu de ma requête et le contenu est bien différent :s...
Commenter la réponse de Darktruff
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 25 mars 2010 à 21:11
0
Merci
Salut,

Ok, alors montre nous ton code d'appel pour l'exécution de la requête.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
34
Date d'inscription
jeudi 31 mai 2007
Dernière intervention
31 mars 2011
- 25 mars 2010 à 21:23
0
Merci
Voici...

public List<Sector> show()
{
Session session = HibernateUtil.currentSession();
Query query = session.createQuery("FROM Sector");
List<Sector> list = query.list();
return list;
}
Commenter la réponse de Darktruff
Messages postés
34
Date d'inscription
jeudi 31 mai 2007
Dernière intervention
31 mars 2011
- 25 mars 2010 à 21:40
0
Merci
Mysql... Et voila le code executé si je fais un un ajout avant affichage :

private void createSector(CreateSectorForm form) throws ParseException
{
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Sector sector = new Sector();
session.persist(sector);
sector.setName(form.getName());
tx.commit();
}
Et comment on flush une requête?
Commenter la réponse de Darktruff
Messages postés
34
Date d'inscription
jeudi 31 mai 2007
Dernière intervention
31 mars 2011
- 25 mars 2010 à 21:43
0
Merci
D'ailleurs je viens de voir une erreur... le persist avant le set c'est pas très cool XD! Mais bon j'ai corrigé ça et c'est toujours la même chose..
Commenter la réponse de Darktruff
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 25 mars 2010 à 21:56
0
Merci
Salut,

Je ne pense pas que le persist avant le set ait une grosse importance vu que les requêtes sont exécutés au commit de la transaction.

Essaye un flush manuel de ta session au cas où :
private void createSector(CreateSectorForm form) throws ParseException 
{ 
Session session = HibernateUtil.currentSession(); 
Transaction tx = session.beginTransaction(); 
Sector sector = new Sector(); 
sector.setName(form.getName()); 
session.persist(sector); 
session.flush();
tx.commit(); 
}


Sinon, mets un point d'arrêt juste avant ta requête de récupération de la liste et regarde dans la base de données si toutes les données que tu es sensé récupéré y sont bien...
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 25 mars 2010 à 21:57
0
Merci
Salut,

Ok, c'était bien le flush alors ;)

Le fait de flusher la session force hibernate a exécuter les requêtes (à utiliser avec parcimonie, juste pour s'assurer que les données sont bien écrites).
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
34
Date d'inscription
jeudi 31 mai 2007
Dernière intervention
31 mars 2011
- 25 mars 2010 à 21:59
0
Merci
Ouaip c'est déjà fais encore merci ^^.
Commenter la réponse de Darktruff

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.