Problème requête HQL.

Résolu
Darktruff Messages postés 34 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 31 mars 2011 - 25 mars 2010 à 19:45
Darktruff Messages postés 34 Date d'inscription jeudi 31 mai 2007 Statut Membre 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 :).

11 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 mars 2010 à 21:36
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
3
Darktruff Messages postés 34 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 31 mars 2011
25 mars 2010 à 21:48
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!
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 mars 2010 à 20:26
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
0
Darktruff Messages postés 34 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 31 mars 2011
25 mars 2010 à 21:05
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 mars 2010 à 21:11
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
0
Darktruff Messages postés 34 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 31 mars 2011
25 mars 2010 à 21:23
Voici...

public List<Sector> show()
{
Session session = HibernateUtil.currentSession();
Query query = session.createQuery("FROM Sector");
List<Sector> list = query.list();
return list;
}
0
Darktruff Messages postés 34 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 31 mars 2011
25 mars 2010 à 21:40
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?
0
Darktruff Messages postés 34 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 31 mars 2011
25 mars 2010 à 21:43
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..
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 mars 2010 à 21:56
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
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 mars 2010 à 21:57
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
0
Darktruff Messages postés 34 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 31 mars 2011
25 mars 2010 à 21:59
Ouaip c'est déjà fais encore merci ^^.
0
Rejoignez-nous