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 :

mapper des ejb3.0 à une table oracle existante


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par défaut mapper des ejb3.0 à une table oracle existante
    Bonjour j'ai un petit problème pour mapper des entities bean à des tables d'une base existante.

    ///////
    j'ai 2 tables :

    USER
    id (pk)
    ...

    et

    PAGE
    page_id (pk)
    ...

    et dans ma base existante j'ai une table de jointure :

    JOIN
    user_id (pk1)
    page_id (pk2)

    /////////

    voilà normalement j'aurais fait si l'a base était inexistante, les mêmes tables mais avec un ID pour lable join

    j'ai developpé des ejb3.0 entities ayant comme champs les memes noms,

    puis pour la table de jointure :

    ...
    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
    @Id
    @Column(name="PAGE_ID", unique=false)
    public double getPage_id() {
    		return page_id;
    }
     
     
    public void setPage_id(double form_id) {
    		this.page_id = form_id;
    }
     
     
     
    @Id
    @Column(name="USER_ID", unique=false)
    public String getUser_id() {
    		return user_id;
    }
    ...


    voilà déjà le problème c que comme ça je ne peux pas rajouter par exemple :

    un objet JOIN ayant un USER_ID existant..
    dans la BD actuelle ce champs n'est pas unique, du moins les données.

    exemple :
    USER_ID PAGE_ID
    fd174 17
    fd174 15
    fd175 17
    fd175 18

    c une table qui pour un utilisateur donnée le lie à une page.

    j'appelle :
    une méthode qui va rajouter une Collection<JOIN>
    contenant les valeurs suivantes :

    USER_ID PAGE_ID
    10857098 -4
    10857098 -3


    voilà j'ai une exception avec le code ci dessus :

    15:35:29,776 INFO [STDOUT] Enregistrement persisté :10857098; -4.0
    15:35:29,786 INFO [STDOUT] ERREUR SQL : javax.persistence.PersistenceException: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [ejb.JOIN#10857098]

    donc il me dit que l'identifiant n'est pas unique...mais bon je sais que normalement dans une entity il faut un identifiant pour l'entity, mais je ne peux pas modifier ma classe.

    J'ai essayer un autre moyen sans la l'entity JOIN, mais en utilisant des

    dans USER
    Collection<PAGE>
    et dans PAGE
    Collection<USER>

    avec sur les getters.setters des relations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @OneToMany(mappedBy = "ID")
    @JoinColumn(table ="PT_JOIN", name="USER_ID", nullable=false, updatable=true)
    [EDIT]
    normalement c des ManyToMany,.mais bon c'est la même erreur...
    [/EDIT]

    idem dans l'autre avec les bons champs, il me sort une exception de clef etrangères..mais jene sais pas si c'est dans la base ou dans l'entity


    15:52:36,444 INFO [EntityBinder] Bind entity ejb.USER on table USER
    15:52:36,484 WARN [ServiceController] Problem starting service persistence.units:jar=EJB.jar,unitName=MABASE
    org.hibernate.cfg.NotYetImplementedException: Collections having FK in secondary table


    C'est peut etre pas la bonne méthode, donc si quelqu'un à une solution..

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Essaie 2 @ManyToMany, si ta table d'association ne contient que les 2 clefs étrangères.
    Si tu as d'autres données dans cette table, il faudra faire 2 one-to-many.

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par défaut
    merci je vais essayer

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par défaut
    dans les deux entities : USER et PAGE

    dans USER
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @ManyToMany(mappedBy = "PAGE_ID")
    	@JoinColumn(table ="JOIN", name="PAGE_ID", nullable=false, updatable=true)
    	public Collection<PAGE> getListe_PAGE() {
    		return liste_PAGE;
    	}
    dans PAGE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @ManyToMany(mappedBy = "ID")
    	@JoinColumn(table ="JOIN", name="USER_ID", nullable=false, updatable=true)
    	public Collection<USER> getListe_USER() {
    		return liste_USER;
    	}
    l'entity JOIN, n'étant plus une entity...(enlevé le tag @Entity)


    dèjà le BIND est okay, mais :

    16:23:01,536 WARN [ServiceController] Problem starting service persistence.units:jar=EJB.jar,unitName=MABASE
    org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: ejb.PAGE.PAEG_ID in ejb.USER.liste_PAGE

    voila merci encore fr1man

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    sur cette ligne :
    entity property: ejb.PAGE.PAEG_ID in ejb.USER.liste_PAGE
    c'est normal, le "PAEG_ID" ?

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par défaut
    non j'ai juste mal ecrit quand j'ai fait un copier coller car les nom sont assez long, ct pour reduire un peu :p

    donc c bien :

    16:23:01,536 WARN [ServiceController] Problem starting service persistence.units:jar=EJB.jar,unitName=MABASE
    org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: ejb.PAGE.PAGE_ID in ejb.USER.liste_PAGE

Discussions similaires

  1. [Débutant] mapper des objets sur une table de sqlite
    Par fourchette dans le forum C#
    Réponses: 16
    Dernier message: 19/04/2012, 14h45
  2. Extraire des données d'une table Oracle à partir de Tomcat
    Par elekis dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 21/03/2012, 20h22
  3. Réponses: 2
    Dernier message: 22/10/2010, 16h14
  4. Réponses: 4
    Dernier message: 05/12/2007, 19h06
  5. format des dates d'une table déjà existante
    Par Gary_Stoupy dans le forum Access
    Réponses: 8
    Dernier message: 19/01/2007, 14h19

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