Je viens de commencer avec JEE6 en utilisant netbeans IDE, et maintenant j'apprends JPA avec toplink. J'utilise Netbeans IDE et mySQL.JPA many to many cascading delete
J'ai créé 2 tables très simples, avec une relation plusieurs à plusieurs:
table student
int id PK
varchar name
table teacher
int id PK
varchar name
//the mapping
table studentTeacher
int studentID FK
int teacherID FK
Le tableau studentTeacher cartes id étudiants à id Les enseignants, avec cascade sur suppression et mise à jour. J'ai utilisé la fonctionnalité netbeans 'generate entities from database', et ça marche bien: Je peux ajouter un objet Student à ma table d'étudiant, et je peux ajouter un objet Teacher à ma table d'enseignant. Le problème est, comment puis-je créer une entité «studentTeacher» et le persister? Ou c'est déjà fait par l'IDE?
Voici les annotations générées automatiquement à partir Netbeans:
//Student Entity annotation generated by Netbeans 7.0.1
@Id
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;
@Size(max = 40)
@Column(name = "name")
private String name;
@JoinTable(name = "studentTeacher", joinColumns =
{
@JoinColumn(name = "studentID", referencedColumnName = "id")
}, inverseJoinColumns =
{
@JoinColumn(name = "teacherID", referencedColumnName = "id")
})
@ManyToMany
private Collection<Teacher> teacherCollection;
Merci!
Très bien, mais comment puis-je remplir la table studentTeacher? Ce qui compte vraiment dans ce cas, c'est le mappage fourni par cette table. Je suis confus, achetant un livre maintenant. – Fernando
Vous devez manipuler les listes qui mappent la relation many-to-many avec soin, donc, si vous ajoutez un 'Teacher' à votre entité' Student', alors assurez-vous que vous ajoutez aussi cette instance 'Student' au précédent mentionné 'Maître'. JPA effectuera la "population" de votre table d'intermédiaire lorsque vous invoquerez 'EntityManager.persist (student)' ou 'EntityManager.persist (teacher)' (et la même chose avec n'importe quelle autre méthode) –
Merci, je vais essayer et commencez JPA depuis le début. – Fernando