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 :

Criteria petite question


Sujet :

Hibernate Java

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut Criteria petite question
    J ai dans mon entité Affaire une collection de communes qui elle possède un district

    je créer donc des Criteria de cette manière

    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
     
    	private Criteria createCriteriaForCommune(Criteria criteria, Commune commune, YaminaDistrict district) {
    		Criteria manyToMany = criteria.createCriteria("communes");
    		if (commune.getLibelleDe() != null && commune.getLibelleDe().length() > 0)
    			manyToMany.add(Expression.like("libelleDe", "%" +commune.getLibelleDe() + "%"));
     
    		if (commune.getLibelleFr() != null && commune.getLibelleFr().length() > 0) {
    			manyToMany.add(Expression.like("libelleFr", "%" +commune.getLibelleFr() +"%"));	
    		}
    		if (commune.getNumeroOFS() > 0) {
    			manyToMany.add(Expression.eq("numeroOFS", commune.getNumeroOFS()));
    		}
    		if (district.getId() > 0) {
    			manyToMany.add(Expression.eq("district.id", district.getId()));
    		}
    		if (district.getLibelleFr()!= null && district.getLibelleFr().length() > 0) {
    			Criteria districtCriteria= manyToMany.createCriteria("district");
    			districtCriteria.add(Expression.like("libelleFr", "%" + district.getLibelleFr()) + "%");
    		}
    		return criteria;
    cependant j'obtiens une liste vide ... dois je ajouter moi meme un join ?
    (je précise une valeur pour le libelleFr)
    d avance merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    cela me semble bizzard car dans le sql généré les jointures s y trouvent bien ...

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    C'est plutôt que ta méthode reçoit un argument Criteria, tu créés un autre objet Criteria, tu lui affectes les critères de sélection, et tu retournes celui qui venait des paramètres (qui lui, n'a pas subit la moindre modification)...

    Pourquoi ne pas appliquer tes restrictions au Criteria en paramètre ?

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    A cause des relations ?
    je construit mes criteria qui marche très bien sauf dans ce cas :

    dans affaire j ai un many to many de communes et dans commune j ai un district

    je vois pas trop comment tu voudrais le faire

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par *alexandre* Voir le message
    A cause des relations ?
    je construit mes criteria qui marche très bien sauf dans ce cas :

    dans affaire j ai un many to many de communes et dans commune j ai un district

    je vois pas trop comment tu voudrais le faire
    Laisse tombé, je suis à la masse, je mélange un peu EJB3 et Criteria...

    Tu dis que tu as une liste vide, mais quels que soient les paramètres passé ?

    Il y a une chose également qui me parait un peu risquée, c'est dans les like.
    A ta place, je rajouterais un trim() sur la valeur pour éviter de générer une comparaison sur "% leLibellé % (alors que %leLibellé% attendu)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Expression.like("libelleDe", "%" +commune.getLibelleDe().trim() + "%"
    Peux-tu montrer le mapping des 3 classes ?

    A+

Discussions similaires

  1. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  2. [CR8.5] petite question ..
    Par mcrocher dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 13/09/2004, 15h04
  3. Une petite question
    Par Etienne1 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/08/2004, 16h19
  4. [FOREIGN KEY] petite question bete ...
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 16h35
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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