JPA ManyToMany, comment peut-JoinTable ont une propriété?
J'ai une question pour la conception de la ManyToMany dans EJB, comment peut-jointable a une propriété?
Voici un exemple, les élèves et les cours sont ManyToMany, tous les élèves ont beaucoup de cours, et de nombreux étudiants choisissent un cours.
@Entity
public class Student implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
private Collection<Course> courses;
@ManyToMany(mappedBy = "students",cascade=CascadeType.ALL)
public Collection<Course> getCourses() {
return this.courses;
}
public void setCourses(Collection<Course> courses) {
this.courses = courses;
}
}
@Entity
public class Course implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
private Collection<Student> students;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "Student_Course",
joinColumns = {@JoinColumn(name = "Course_ID", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "Student_ID", referencedColumnName = "id")})
public Collection<Student> getStudents() {
return this.students;
}
public void setStudents(Collection<Student> students) {
this.students = students;
}
}
Cependant, si j'ai une propriété dans le JoinTable, par exemple, chaque étudiant dispose d'un score pour un cours. Comment puis-je le faire dans EJB avec ManyToMany?
Merci beaucoup pour votre attention!
Si votre relation de propriété, alors vous devriez modèle d'entité. Cette question est presque identique: stackoverflow.com/questions/7602386/... Même le nom de l'entité représentant la relation (CourseAssignment) s'intègre très bien à votre cas.
Il n'est pas possible, vous ne pouvez pas ajouter une propriété à la relation. Si vous avez besoin d'accéder à la propriété dans la table de jointure, alors que la propriété appartient à une certaine entité et par conséquent, vous devez entité tierce.
Merci Mikko Maunu beaucoup! Et pour le ManyToMany, voici une bonne solution: une Cartographie de plusieurs-à-plusieurs rejoindre la table avec une colonne supplémentaire en utilisant JPA
désolé , j'ai corrigé. J'ai juste une autre question, quand j'ai utilisé une @Embeddable classe PK pour jointable, il ne fonctionne pas(la compilation a échoué),quelqu'un a dit que JPA2.0 ne supporte pas que! s'il vous plaît regardez cette jpa-eclipselink-manytomany-with-datest-il possible de le faire fonctionner?
Il n'est pas possible, vous ne pouvez pas ajouter une propriété à la relation. Si vous avez besoin d'accéder à la propriété dans la table de jointure, alors que la propriété appartient à une certaine entité et par conséquent, vous devez entité tierce.
Merci Mikko Maunu beaucoup! Et pour le ManyToMany, voici une bonne solution: une Cartographie de plusieurs-à-plusieurs rejoindre la table avec une colonne supplémentaire en utilisant JPA
désolé , j'ai corrigé. J'ai juste une autre question, quand j'ai utilisé une @Embeddable classe PK pour jointable, il ne fonctionne pas(la compilation a échoué),quelqu'un a dit que JPA2.0 ne supporte pas que! s'il vous plaît regardez cette jpa-eclipselink-manytomany-with-datest-il possible de le faire fonctionner?
OriginalL'auteur seaguest | 2011-12-20
Vous devez vous connecter pour publier un commentaire.
Il n'est pas possible, vous ne pouvez pas ajouter une propriété à la relation. Si vous avez besoin d'accéder à la propriété dans la table de jointure, alors que la propriété appartient à une certaine entité et par conséquent, vous devez entité tierce.
OriginalL'auteur
C'est possible.
Vous avez juste besoin de remplacer plusieurs-à-plusieurs avec cartographie de l'explicite combinaison de l'un-à-plusieurs et plusieurs-à-un les mappages par l'intermédiaire d'une 3ème entité, qui représenterait l'association entre les deux entités (l'élève, les cours et dans votre exemple).
Veuillez lire les détails ici
OriginalL'auteur Alex Vayda
Entités avec Beaucoup de Nombreuses Relations de commerce et de Service).
Ceci peut être réalisé à l'aide d'une troisième entité comme suit:-
OriginalL'auteur Narender Saini