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 :

Jointure "outer join"


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Par défaut Jointure "outer join"
    bonjour a tous,

    je fais actuellement un projet java avec struts et hibernate et je rencontre quelques problemes avec hibernate.

    J'aimerais faire la requete suivante avec hibernate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT action.*, action_sur_envt.code_envt FROM Action LEFT OUTER JOIN Action_Sur_Envt ON Action.no_action=Action_Sur_Envt.no_action order by action.no_action asc
    sachant que ma classe Action est mappée ainsi :
    <class name="Action" table="ACTION">
    <id name="no"
    column="NO_ACTION"
    type="integer">
    <generator class="increment"/>
    </id>

    <property name="dateDebut"
    column="DATE_DEBUT_ACTION"
    type="date"
    not-null="true"/>

    <property name="dateFin"
    column="DATE_FIN_ACTION"
    type="date"
    not-null="true"/>

    <property name="libelle"
    column="LIB_ACTION"
    type="string"
    length="128"
    not-null="true" />
    </class>
    et ma classe ActionSurEnvt ainsi :
    <class name="ActionSurEnvt" table="ACTION_SUR_ENVT">
    <composite-id name="id" class="fr.groupama.planlivraison.biz.beans.pk.ActionSurEnvtPK">

    <key-many-to-one name="action"
    class="fr.groupama.planlivraison.biz.beans.impl.Action"
    column="NO_ACTION" lazy="false"/>

    <key-many-to-one name="envt"
    class="fr.groupama.planlivraison.biz.beans.impl.Environnement"
    column="CODE_ENVT" lazy="false"/>

    </composite-id>
    </class>
    si vous avez une idée ...

  2. #2
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Apres une simple recherche dans la Doc Hibernate sur les mots OUTER JOIN, voici la partie concernée :
    http://www.hibernate.org/hib_docs/v3...onal-outerjoin
    Donc apparemment tu actives outer join avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hibernate.max_fetch_depth=1
    par exemple, puis, tu mappes l'association avec :
    et le tour est joué

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Par défaut
    merci pour ta réponse mais le problème c'est que je ne peux pas ajouter
    dans l'élément
    <key-many-to-one name="action"
    class="fr.groupama.planlivraison.biz.beans.impl.Action"
    column="NO_ACTION" lazy="false"/>

  4. #4
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Ah, en effet, c'est de suite plus gênant la ... je ne vois pas trop comment contourner le problème du coup et le fait de laisser lazy=false et d'activer l'outerjoin ne suffit pas dans ce cas ?!?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Par défaut
    non çà ne marche pas pourtant dans le fichier de config d'hibernate j'ai bien la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="hibernate.max_fetch_depth">1</property>
    alors peut etre que c'est pas possible de faire un "outer join" sur un attribut <key-many-to-one> ou alors c'est ma requete qui n'est pas correcte.

    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT new fr.groupama.planlivraison.ihm.affichage.ActionItemDisplay(action, actionSurEnvt.id.envt.code, actionSurEnvt.id.envt.type.abrege) FROM  ActionSurEnvt as actionSurEnvt RIGHT OUTER JOIN actionSurEnvt.id.action as action

  6. #6
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 45
    Par défaut
    tu pourrais peut-être essayer de spécifier le mode de récupération "fetch=JOIN" lors de la récupération de ton objet?? je ne sais pas si c'est possible sur un "composite-id" mais bon... ça vaut le coup d'essayer.

Discussions similaires

  1. Jointure full outer join
    Par opensource dans le forum Langage SQL
    Réponses: 15
    Dernier message: 07/09/2008, 17h28
  2. Transformation de jointure =(+) en OUTER JOIN
    Par tchoimars dans le forum SQL
    Réponses: 2
    Dernier message: 24/05/2007, 13h24
  3. Jointure LEFT OUTER JOIN , aide demandée :)
    Par fraginfo dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/10/2006, 11h02

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