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 actif
    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
    Points : 223
    Points
    223
    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.
    La posix attitude ...

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    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 actif
    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
    Points : 223
    Points
    223
    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 )
    La posix attitude ...

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    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 actif
    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
    Points : 223
    Points
    223
    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
    La posix attitude ...

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    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 actif
    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
    Points : 223
    Points
    223
    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
    La posix attitude ...

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    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 actif
    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
    Points : 223
    Points
    223
    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 ...
    La posix attitude ...

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    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