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 :

Example et Jointure


Sujet :

JPA Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 49
    Points : 43
    Points
    43
    Par défaut Example et Jointure
    Bonjour,

    J'ai d'un coté développé une méthode utilisant "Example" (org.hibernate.criterion.Example) permettant de "filtrer" mes données de ma première table. J'ai donc un Criteria.

    j'ai récupérer le code suivant permettant de faire plusieurs jointures (c'est cette double jointure que je dois appliquer à mon criteria):
    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
    22
    23
     
               CriteriaBuilder qBuilder = em.getCriteriaBuilder();
                CriteriaQuery<T> qDef = qBuilder.createQuery(getObjectClass());
     
                Root<T> qRoot = qDef.from(getObjectClass());
                Join<T, Premises> joinPremises = qRoot.join("premises");
                Join<Premises, ConcretePerimeterPortfolioElement> joinPerimeterPortfolioElt = joinPremises
                        .join("perimeterPortfolioElt");
     
                List<Predicate> predicateList = new ArrayList<Predicate>();
                predicateList.add(qBuilder.equal(joinPerimeterPortfolioElt.get("id").<SphUser> get("user"), user));
     
                 predicateList.add(qBuilder.equal(joinPerimeterPortfolioElt.<Boolean> get("inPortfolio"), inPortfolio));
     
                Predicate[] predicates = new Predicate[predicateList.size()];
                predicates = predicateList.toArray(predicates);
                qDef.where(qBuilder.and(predicates));
     
                if (null != orderBy) {
                    qDef.orderBy(ascending ? qBuilder.asc(qRoot.get(orderBy)) : qBuilder.desc(qRoot.get(orderBy)));
                }
     
                TypedQuery<T> query = em.createQuery(qDef.select(qRoot));
    Comment puis-je assembler les deux, ou quelle est la "traduction" de la seconde en utilisant des criteria ... J'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                Criteria criteria = session.createCriteria(getObjectClass());
                criteria.add(example);
     
                criteria.createCriteria("premises");
                criteria.createCriteria("perimeterPortfolioElt");
                criteria.add(Restrictions.eq("inPortfolio", inPortfolio));
                criteria.createCriteria("id");
                criteria.add(Restrictions.eq("user", user));
    Mais cela plante car ma classe n'a pas la propriété : perimeterPortfolioElt.

    Merci pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 49
    Points : 43
    Points
    43
    Par défaut Une solution
    Bonjour,

    J'ai trouvé une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                Criteria criteria = session.createCriteria(getObjectClass());
                criteria.add(example);
     
                criteria.createAlias("premises", "prem");
                criteria.createAlias("prem.perimeterPortfolioElt", "PPElt");
                criteria.add(Restrictions.eq("PPElt.inPortfolio", inPortfolio));
                criteria.add(Restrictions.eq("PPElt.id.user", user));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb jointure texture
    Par dweis dans le forum DirectX
    Réponses: 2
    Dernier message: 24/06/2003, 13h33
  2. Jointures en SQL
    Par Guizz dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/06/2003, 12h21
  3. Réponses: 14
    Dernier message: 17/03/2003, 18h31
  4. Jointures INNER et jointures classiques ???
    Par UbiK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/09/2002, 10h29
  5. jointure renvois pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/08/2002, 12h51

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