La table typique pour un T1 à plusieurs T2 est d'avoir une clé étrangère sur T2 pointant vers T1. La table T1_T2 n'est généralement pas nécessaire.
La structure JPA serait alors un un-à-plusieurs, éventuellement à deux voies.
Il pourrait y avoir des arrangements pour que la structure que vous décrivez fonctionne. Vous pouvez changer T1_T2:
- ajouter une contrainte unique sur T2 (de sorte que seul T2 est autorisé)
Est-ce vraiment ce que vous voulez?
Edité: oui, il est ce que vous voulez ;-)
Je doute que vous pouvez trouver de nombreux exemples sur le net. Je n'ai aucune solution prouvée, mais je voudrais essayer quelque chose le long de ces lignes:
Dans Hibernate annotation reference documentation, voir "2.2.5.3.2.3 Unidirectionnel avec la table de jointure" pour avoir l'idée. Il ressemble à:
@Entity
public class Trainer {
@OneToMany
@JoinTable(
name="TrainedMonkeys",
joinColumns = @JoinColumn(name="trainer_id"),
inverseJoinColumns = @JoinColumn(name="monkey_id")
)
public Set<Monkey> getTrainedMonkeys() {
...
}
Je pense que vous pouvez trouver ce que vous cherchez à https://en.wikibooks.org/wiki/Java_Persistence/OneToMany#Example_of_a_OneToMany_using_a_JoinTable_database – Legna