Tengo una pregunta para diseñar ManyToMany en EJB, ¿cómo puede una propiedad de unión tener una propiedad?
Aquí hay un ejemplo, los estudiantes y los cursos son ManyToMany, cada estudiante tiene muchos cursos y muchos estudiantes eligen uno.JPA ManyToMany, ¿cómo puede JoinTable tener una propiedad?
@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;
}
}
Sin embargo, si tengo una propiedad en el JoinTable, por ejemplo, cada estudiante tiene una calificación para un curso. ¿Cómo puedo hacerlo en EJB con ManyToMany?
¡Muchas gracias por su atención!
Si su relación tiene la propiedad, entonces usted debe modelar como entidad. Esta pregunta es casi idéntica: http://stackoverflow.com/questions/7602386/mapping-value-in-junction-table-to-entity/7603036#7603036 Hasta el nombre de la entidad que representa la relación (CourseAssignment) se ajusta bastante bien a su caso. –
No es posible, no puede agregar propiedad a la relación. Si necesita acceder a la propiedad en la tabla de unión, esa propiedad pertenece a alguna entidad y, como resultado, necesita una tercera entidad. –
lo siento, lo corregí. Tengo otra pregunta, cuando utilicé una clase @Embeddable como PK para enlazar, no funciona (la compilación falló), ¡alguien dijo que JPA2.0 no es compatible! por favor, mira esto [jpa-eclipselink-manytomany-with-dat] (http://stackoverflow.com/questions/4013397/jpa-eclipselink-manytomany-with-data), ¿hay alguna forma de hacerlo funcionar? – seaguest