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 :

Pb Mapping entre une Table et une Table de constantes


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut Pb Mapping entre une Table et une Table de constantes
    Bonjour,

    j'ai une table User ayant une clé étrangère vers une table de constantes UserType contenant un ensemble de couples de valeurs déterminées de types Interger (Id - clé primaire) / String (userTypeLabel).

    Je souhaiterais faire un mapping entre ces 2 tables via un Entity User, sans avoir dans l'Entity User un @OneToMany sur un Entity UserType, mais uniquement avoir un Entity User contenant tous les champs de la table User plus un attribut de type String correspondant à userTypeLabel.


    J'ai essayé avec @SecondaryTable mais cela ne marche pas: il y a bien création de 2 tables, mais la table UserType est créée avec 3 champs, le 3ème étant une clé étrangère vers User. Or c'est l'inverse que je souhaite faire (User qui contient une clé étrangère vers UserType).

    Auriez-vous une idée pour faire une telle chose?

    Merci pour vos réponses.

  2. #2
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut comprends mal
    Bonjour,

    Sans relation OneTOMany, je ne vois pas l'intérêt, ou alors tu utilises une énumération dans ta classe USER.

    La relation OneToMany doit te permettre justement d'importer la clef étrangère.

    Donne ton exemple .

    "Plus qu'un long discours des faits"

    olivier

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Bonjour,


    voici le script sql que je souhaiterais obtenir par le mapping:
    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
    create table USER_TYPE(
            USER_TYPE_ID number(10,0),
            USER_TYPE_LABEL varchar2(30) not null unique,
            primary key (USER_TYPE_ID)
        );
    
    create table USER(
            USER_ID number(10,0),
            COMPANY_NAME varchar2(30),
            NAME varchar2(30) not null,
            USER_TYPE_ID number(10,0) not null,
            primary key (USER_ID)
        );
    
    alter table USER 
            add constraint FK27E3CBBB69E2A0 
            foreign key (USER_TYPE_ID) 
            references USER_TYPE;

    Et voici le Bean User que je souhaiterais avoir (sans les annotations):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public class User implements Serializable {
    
    	private Long userId;
    
    	private String companyName;
    
    	private String name;
    
    	private String userType;
    
    	// Constructeur, getteurs, setteurs ...
    }

    Comme je le disais j'ai testé avec @SecondaryTable mais cela ne marche pas
    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
    @Table(name="USER")
    @SecondaryTable(name="USER_TYPE", pkJoinColumns={
    	@PrimaryKeyJoinColumn(name="USER_TYPE_ID")})
    public class User implements Serializable {
     
    	@Id
    	@Column(name="USER_ID")
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	private long userId;
     
    	@Column(name="COMPANY_NAME", length=30, nullable=true)
    	private String companyName;
     
    	@Column(name="NAME", length=30, nullable=false)
    	private String mergeStatus;
     
    	@Column(name="USER_TYPE_LABEL", table="USER_TYPE", length=20, nullable=false)
    	private String userType;
     
    	// ...


    => Si vraiment il n'y a pas d'autre solution je créerai un Bean UserType et mettrai un @OneToMany dans User, mais cela me dérange de créer un Bean pour un simple String.


    Merci pour vos réponses.

  4. #4
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Bonjour
    Bonjour,

    Pour être plus franc, si tu penses "UML"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    Public class User implements Serializable {
    
    	private Long userId;
    
    	private String companyName;
    
    	private String name;
    
    	private UserType userType;
    
    	// Constructeur, getteurs, setteurs ...
    }
    ce serait plus logique pour JPA.

    avec usertype = myuser.getUsetType();

    olivier

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Bon, bien je vais devoir me contenter de ces petits beans alors.

    Merci Olivier pour tes réponses

  6. #6
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut bonjour
    Bonjour,

    De rien
    olivier

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  2. [AC-2003] Lier les tables d'une Base1 dans une Base3 via une Base2
    Par ted the Ors dans le forum VBA Access
    Réponses: 0
    Dernier message: 30/12/2009, 11h58
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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