J'ai besoin de 3 entités: Utilisateur, Contrat (qui sont une relation de plusieurs à plusieurs) et une entité intermédiaire: UserContract (ceci est nécessaire pour stocker certains champs).Comment faire correctement une table de jointure manytomany dans JPA?
Ce que je veux savoir est la bonne façon de définir les relations entre ces entités JPA/EJB 3.0 afin que les opérations (persistent, supprimer, etc.) sont OK.
Par exemple, je veux créer un utilisateur et ses contrats et les persistent d'une manière facile.
Actuellement ce que j'ai est la suivante: En User.java:
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
private List<UserContract> userContract;
En Contract.java:
@OneToMany(mappedBy = "contract", fetch = FetchType.LAZY)
private Collection<UserContract> userContract;
Et mon UserContract.java:
@Entity
public class UserContract {
@EmbeddedId
private UserContractPK userContractPK;
@ManyToOne(optional = false)
private User user;
@ManyToOne(optional = false)
private Contract contract;
Et mon UserContractPK:
@Embeddable
public class UserContractPK implements Serializable {
@Column(nullable = false)
private long idContract;
@Column(nullable = false)
private String email;
Est-ce la meilleure façon d'atteindre mes objectifs?