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 :
[EDIT]
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)
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
Partager