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

Persistance des données Java Discussion :

Problème conception relations


Sujet :

Persistance des données Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 56
    Points : 34
    Points
    34
    Par défaut Problème conception relations
    Bonjour j'ai un problème de conception relationnel avec un mapping JPA à effectuer. Je ne sais pas comment faire afin de respecter certaines contraintes, quelqu'un peut m'aider par rapport à la description que je vais faire ?

    Tout d'abord je dispose de deux tables Personne et Login.
    Voici les détails :

    Une personne peut avoir 1 login et 1 alias (alias est géré comme un login, sauf qu'il est nommé comme alias), il y a une contrainte d'unicité sur le domaine login/alias et il ne peut être utilisé que par une autre personne et le login doit être différent de l'alias, l'alias peut être null par contre.

    Une autre contrainte est que l'utilisateur peut modifier son alias, alors l'alias existe toujours mais il fait partie de la listes des alias qui ne sont plus utilisés par l'utilisateur, mais ils sont toujours liés à l'utilisateur et ne peuvent être repris par une autre personne.

    J'aurais aimé que la table login est un identifiant de la personne et vice versa.

    J'ai bien plusieurs idées de la façon de gérer ça d'un point de vue relationnel, mais je ne sais pas comment cela peut être réalisé avec un mapping hibernate/JPA tout en respectant ces contraintes.

    Merci d'avance et n'hésitez pas à me poser des questions ou à faire des propositions...

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    j'ai trouvé la façon de faire...

    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
    24
    @Entity
    public class Alias implements Serializable {
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private long id;
     
        @OneToOne
        @JoinColumn(name = "pers_login")
        private Pers persLogin;
     
        @OneToOne
        @JoinColumn(name = "pers_alias")
        private Pers persAlias;
     
        @ManyToOne
        @JoinColumn(name = "pers_old_alias")
        private Pers persOldAlias;
     
        //Attributs
        /** Nom de login. */
        @Column(unique = true, nullable = false)
        private String nom;
    ...
    et
    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
    @Entity
    public class Pers implements Serializable{
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private long id;
     
        /**    */
        private String nom;
     
        /** Login de l'individu généré par l'ENT.*/
        @OneToOne(fetch = FetchType.EAGER, mappedBy="persLogin")
        private Alias login;
     
        /** Login de l'individu généré par l'ENT.*/
        @OneToOne(fetch = FetchType.EAGER, mappedBy="persAlias")
        private Alias alias;
     
        /** Login de l'individu généré par l'ENT.*/
        @OneToMany(fetch = FetchType.EAGER, mappedBy="persOldAlias")
        private Collection<Alias> oldAlias;

    Par contre mon problème maintenant est comment déclarer l'unicité sur la clé personne pour les trois valeurs des id générées? c'est à dire que si l'un des trois attributs est renseigné les deux autres doivent être NULL

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Tu peux mettre en oeuvre cette contrainte dans une règle métier au niveau Java.

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Si tu veux pas que ca plante lors d update j'ajouterais également les @Cascade

Discussions similaires

  1. [CONCEPTION] Problème de relations
    Par Stnaire dans le forum Modélisation
    Réponses: 23
    Dernier message: 24/05/2007, 02h32
  2. [Conception]problème de relation entre les tables
    Par vaness76 dans le forum Modélisation
    Réponses: 3
    Dernier message: 18/04/2007, 12h32
  3. [Conception] Problème de relation entre 2 tables
    Par mLk92 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/10/2006, 16h39
  4. [conception] Requête de sélection problèmes de relations
    Par snoopy69 dans le forum Modélisation
    Réponses: 26
    Dernier message: 08/11/2005, 15h23
  5. [N-Tier] Problème conception architecture 3-tiers
    Par Royd938 dans le forum Autres
    Réponses: 3
    Dernier message: 17/06/2005, 12h47

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