Double relation entre deux entity (dont une hérité)
Bonjour.
Je souhaite mettre en place ceci :
http://img518.imageshack.us/img518/1760/entity.th.jpg
Nous avons donc transfert qui hérite de evenement.
Et ce que je souhaite mettre en place c'est une trace des transferts que ça soit expéditeur ou destinataire.
Par exemple si on envoie un colis dans un magasin, deux transfert vont être crée (un en destinataire dans un magasin, un en expéditeur dans l'autre magasin).
Pour mettre en place cela j'écris dans mon entity magasin :
Code:
1 2 3 4
| @OneToMany(mappedBy = "magasin", fetch = FetchType.LAZY)
private List<Transfert> transfertExpediteur;
@OneToMany(mappedBy = "magasin", fetch = FetchType.LAZY)
private List<Transfert> transfertDestinataire; |
et mon entity transfert :
Code:
1 2 3 4 5 6
| @ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "id_magasinExpediteur", nullable = false)
private Magasin magasinExpediteur;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "id_magasinDestinataire", nullable = false)
private Magasin magasinDestinataire; |
Mais bon cette solution ne peut pas fonctionner j'imagine car dans magasin il ne sait pas comment reconstruire la bonne liste.
Bon du coup j'ai crée deux nouvelles entity hérités de Transfert :
Code:
1 2 3 4
| @OneToMany(mappedBy = "magasin", fetch = FetchType.LAZY)
private List<TransfertExpediteur> transfertExpediteur;
@OneToMany(mappedBy = "magasin", fetch = FetchType.LAZY)
private List<TransfertDestinataire> transfertDestinataire; |
Mais ça ne fonctionne pas à l'exécution j'ai droit à l'erreur suivante :
Code:
1 2 3
| Exception Description: predeploy for PersistenceUnit [persistence] failed.
Internal Exception: Exception [TOPLINK-7154] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (05/27/2008))): oracle.toplink.essentials.exceptions.ValidationException
Exception Description: The attribute [transfertDestinataire] in entity class [class toto.sheldon.entity.Magasin] has a mappedBy value of [magasin] which does not exist in its owning entity class [class toto.sheldon.entity.TransfertDestinataire]. If the owning entity class is a @MappedSuperclass, this is invalid, and your attribute should reference the correct subclass. |
Bref je suis un peu perdu, et je ne vois pas comment mettre tout cela en place.