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 :

probleme critere hibernate


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 84
    Points
    84
    Par défaut probleme critere hibernate
    Bonjour à tous,

    je souhaite creer un requete en fonction de critere de recherche

    voici ma requete

    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
    Query query;
    		String queryString =
    			"select distinct trequest from TRequest as trequest, TProposition as tproposition "
    					+ "where tproposition.RequestID = trequest and "
    					+ "(tproposition.Status = :status1 or tproposition.Status = :status2) and tproposition.Id = " +
    							"(select max(tproposition2.Id) from TProposition as tproposition2 "+ 
    							"where tproposition.RequestID = tproposition2.RequestID) ";
    		query = session.createQuery(queryString);
    		query.setString("status1", Proposition.WAITING);
    		query.setString("status2", Proposition.CANCELING);
    		if (company != null && company.length() > 0)
    		{
    			queryString +="and trequest.UseridConcerned.Company = :company ";		
    			query.setString("company", company);
    		}
    le probleme est qu'il me jette sur le query.setString("company", company); car j'ai defini plus haut query = session.createQuery(queryString); donc c'est normal.. comment puis je faire ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Si tu veux effectuer des recherches avec critères, utilise Criteria plutôt que Query.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Criteria criteria = session.createCriteria(TaClassePersistante);
    criteria.add(Expression.eq("company", company));
    Et de manière générale il est préférable d'utiliser l'API Criteria plutôt que construire les Query à la main. Je te laisse fouiller un peu la doc et le net, il existe pas mal de tutos.

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par kei2906 Voir le message
    Si tu veux effectuer des recherches avec critères, utilise Criteria plutôt que Query.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Criteria criteria = session.createCriteria(TaClassePersistante);
    criteria.add(Expression.eq("company", company));
    Et de manière générale il est préférable d'utiliser l'API Criteria plutôt que construire les Query à la main. Je te laisse fouiller un peu la doc et le net, il existe pas mal de tutos.
    c'est ce que je pensais mais je voulais eviter d'utiliser criteria par manque de temps...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.createCriteria(TaClassePersistante);
    Quand on a une jointure ,c'est quoi la classePersistante à mettre ??

    Y a pas une autre solution que criteria ? sinon je l'utiliserais...

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Effectivement je n'ai jamais utilisé Criteria avec une jointure...

    Mais à mon avis "jointure Criteria hibernate" sur google et tu as ta solution. Hésite pas à la poster ici, ça m'intéresse

  5. #5
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 247
    Points : 293
    Points
    293
    Par défaut
    Et un truc comme ça :


    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
     
    Query query;
    		String queryString =
    			"select distinct trequest from TRequest as trequest, TProposition as tproposition "
    					+ "where tproposition.RequestID = trequest and "
    					+ "(tproposition.Status = :status1 or tproposition.Status = :status2) and tproposition.Id = " +
    							"(select max(tproposition2.Id) from TProposition as tproposition2 "+ 
    							"where tproposition.RequestID = tproposition2.RequestID) ";
     
     
    		if (company != null && company.length() > 0)
    		{
    			queryString +="and trequest.UseridConcerned.Company = :company ";	
    	                 query = session.createQuery(queryString);
    			query.setString("company", company);
    		}
                    else{
                          query = session.createQuery(queryString);
                    }
                    query.setString("status1", Proposition.WAITING);
    		query.setString("status2", Proposition.CANCELING);
    ça t'evite de faire le createQuery avant d'avoir fini la requete.

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par ganga Voir le message
    Et un truc comme ça :


    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
     
    Query query;
    		String queryString =
    			"select distinct trequest from TRequest as trequest, TProposition as tproposition "
    					+ "where tproposition.RequestID = trequest and "
    					+ "(tproposition.Status = :status1 or tproposition.Status = :status2) and tproposition.Id = " +
    							"(select max(tproposition2.Id) from TProposition as tproposition2 "+ 
    							"where tproposition.RequestID = tproposition2.RequestID) ";
     
     
    		if (company != null && company.length() > 0)
    		{
    			queryString +="and trequest.UseridConcerned.Company = :company ";	
    	                 query = session.createQuery(queryString);
    			query.setString("company", company);
    		}
                    else{
                          query = session.createQuery(queryString);
                    }
                    query.setString("status1", Proposition.WAITING);
    		query.setString("status2", Proposition.CANCELING);
    ça t'evite de faire le createQuery avant d'avoir fini la requete.
    merci mais si je fais plusieurs criteres ca ne fonctionne plus
    ce que je comptais faire c'etait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (company != null && company.length() > 0)
    {
    	queryString +="and trequest.UseridConcerned.Company = :company ";
     
    }
    if(!critere.getConcernUser().equals(""))
    {
    	queryString+="AND trequest.UseridConcerned.LastName like :lastNameUser ";
    }
    etc..
    en attendant de trouver mieux et d'utiliser criteria quand j'aurais le temps je vais faire un tableau de booleen correspondant a mes criteres

    Si j'ai 5 criteres de recherche je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    boolean[] tabCritere = {false,false,false,false,false}
    if (company != null && company.length() > 0)
    {
    	queryString +="and trequest.UseridConcerned.Company = :company ";
    	tabCritere[0] = true;
    }
     
    query = session.createQuery(queryString);
    query.setString("status1", Proposition.WAITING);
    query.setString("status2", Proposition.CANCELING);
    if(tabCritere[0]){
    	query.setString("company", company);
    }
    mais j'aime pas faire ca ,c'est pas du tout propre..

Discussions similaires

  1. [Data] Probleme Spring Hibernate
    Par jamalmoundir dans le forum Spring
    Réponses: 1
    Dernier message: 26/06/2007, 09h09
  2. [invalid configuration] probleme dans hibernate.cfg.xml
    Par grelon dans le forum Hibernate
    Réponses: 5
    Dernier message: 21/05/2007, 09h22
  3. Probleme connexion hibernate
    Par rosros dans le forum Hibernate
    Réponses: 10
    Dernier message: 12/09/2006, 10h37
  4. Probleme avec hibernate
    Par ouedmouss dans le forum Hibernate
    Réponses: 6
    Dernier message: 06/06/2006, 20h42
  5. Problèmes avec Hibernate (sous Eclipse)
    Par Pierric dans le forum Hibernate
    Réponses: 2
    Dernier message: 07/04/2005, 14h35

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