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 :

[Hibernate]Mapping relation one-to-one


Sujet :

Hibernate Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut [Hibernate]Mapping relation one-to-one
    J'ai réalisé le mapping d'une relation one-to-one entre un Utilisateur(nom,prenom etc ...) et une authentification(login,pass).

    Voici le detail du mapping de cette relation
    Coté User :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <many-to-one name="authentification" 
            column="auth_id" 
    		class="persistance.Authentification"
            unique="true"
            not-null="true"
    		fetch="join" />
    Coté Authentification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <one-to-one name="user" cascade="save-update" />
    Cela marche, mais pas tout à fait comme je le désirerai, en effet pour le moment je suis obligé d'enregistrer mon objet authentification avant de l'attribuer à mon utilisateur (cela ne semble pas se faire automatiquement) et lors de la suppression d'un User, il n'y a pas suppression associé de l'authentification.
    Y'a t'il un mapping différent (ou des choses pas correcte dans le mien) pour corriger ceci ?

    Edit : il serait bien aussi que je puisse récuprérer l'User avec une requete sur son login.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    Pour supprimer l'authentification qd tu supprime un user, tu peux faire un truc dans le genre de ça :

    Pour Telephone :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <hibernate-mapping>
     
        <class name="bidirectionnel.bean.Telephone" table="TELEPHONE">
            <id name="id" column="ID" type="int">
                <generator class="increment"/>
            </id>
     
     		<property name="numero" column="NUMERO" type="int"/>
     
     		<many-to-one name="p" column="IDPERS" not-null="true"/>
     
        </class>
     
    </hibernate-mapping>
    Pour Personne :
    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
    <hibernate-mapping>
     
        <class name="bidirectionnel.bean.Personne" table="PERSONNE">
            <id name="id" column="ID" type="int">
                <generator class="increment"/>
            </id>
     
     		<property name="nom" column="NOM" type="string"/>
     
     		<set name="telephones" lazy="false" inverse="true">
        		<key column="IDPERS" on-delete="cascade"/>
        		<one-to-many class="bidirectionnel.bean.Telephone"/>
    		</set>
     
        </class>
     
    </hibernate-mapping>
    Ya aussi une autre technique :
    cascade="all-delete-orphan" dans le set mais ça marche pas toujours, je crois!

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Ok d'accord et donc a ce moment le set n'est pas interprété comme une collection, mais comme un simple objet ? (C'est une relation 1 - 1 que j'ai moi )

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    Mon set est interprété comme une collection !
    Mais je comprends pas trop, d'un côté, tu met un many to one et de l'autre un one to one, c'est contradictoire comme relation

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Non car regarde de plus près mon many-to-one il a une propritété unique="true"
    C'est un mapping one-to-one, je ne récupère pas une collection mais simplement un objet, c'est la représentation d'une relation 1 à 1 entre les 2 classes

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    Je comprends pas trop ta logique !!!
    Je reste perplexe !
    Pourquoi as-tu une relation one to one et à la fois many to one dans l'autre sens, ça semble pas logique en relationnelle.
    Ton many to one devient un one to one, avec ton unique="true" ?
    Si oui, pourquoi utiliser un many to one ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Parce que d'après la doc Hibernate c'est comme cela que ca se fait
    Association Hibernate

    Sinon personne pour rectifier ma relation one-to-one

  8. #8
    Membre expérimenté
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Par défaut
    Ca aurait été interressant que tu passes le lien dès le debut

    Mais du coup, c'est bien, je vois pas ce qui te gene ...

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Ok d'accord si c'est bien comme cela que ca se fait : en fair ce qui me gène par exemple c'est d'etre obliger de faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    session.persist(auth); //persistance ddddde l'authentification
    		us.setAuthentification(auth); //attribution de l'authentification
    		session.persist(us); //persistance de l'User
    J'aimerais pouvoir persister l'authentification simplement parcequ'elle est lié à l'User.

    Et que lors de la destruction de l'user, celle de l'authentification suive ...

  10. #10
    Membre expérimenté
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Par défaut
    Etant donné que la clé auth est dans usr c'est pas possible. Dans le cas ou ca serait l'inverse ca serait ok (usr -> auth avec fk_usr)

    Et c'est pour la meme raison que tu dois persister l'auth d'abord ... (sinon la référence 'auth' de l'usr n'existe pas qd tu le sauvegardes.

Discussions similaires

  1. [Spring / Hibernate / JPA] Relation Many to One
    Par Yoru17 dans le forum Hibernate
    Réponses: 0
    Dernier message: 25/06/2015, 11h35
  2. [Hibernate 3] Relation many-to-one
    Par LordBob dans le forum Hibernate
    Réponses: 13
    Dernier message: 06/11/2008, 09h27
  3. Réponses: 3
    Dernier message: 08/06/2006, 17h38
  4. [Hibernate] Mapping de one to one ?
    Par Limod dans le forum Hibernate
    Réponses: 4
    Dernier message: 07/06/2006, 10h06
  5. Hibernate : suppression sur relation many to one
    Par taf dans le forum Hibernate
    Réponses: 1
    Dernier message: 23/05/2006, 13h08

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