Tengo una tabla de USUARIO y una tabla de CURSO. Un USUARIO puede tener muchos CURSOS y, POR SUPUESTO, muchos USUARIOS. La tabla de unión contiene un valor ROLE que determina qué función tiene el usuario en un CURSO (es decir, Instructor, Estudiante, etc.). Necesito de alguna forma asociar este rol con el CURSO para cada USUARIO.Asignando valor en la tabla de unión a la entidad
Si pongo el rol en la clase del curso, no puede funcionar, ya que un curso tiene muchos usuarios y viceversa en la clase de usuario.
Esto es lo que tengo hasta ahora:
@Entity
@Table(name = "USERS")
public class User {
@Id
@Column(name = "PK1")
private Long id;
@Column(name = "USER_ID")
private String userId;
@ManyToMany
@JoinTable(name = "COURSE_USERS",
joinColumns = @JoinColumn(name = "USERS_PK1", referencedColumnName = "PK1"),
inverseJoinColumns = @JoinColumn(name = "CRSMAIN_PK1", referencedColumnName = "PK1"))
private Collection<Course> courses;
...
@Entity
@Table(name = "COURSE")
@SecondaryTable(name = "COURSE_USERS",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "CRSMAIN_PK1"))
public class Course {
@Id
@Column(name = "PK1")
private Long id;
// THIS PROBABLY WON'T WORK //
@Column(name = "ROLE", table = "COURSE_USERS")
private Character role;
@Column(name = "AVAILABLE_IND")
private boolean available;
@Column(name = "COURSE_NAME")
private String name;
@Transient
private String url;
...
Nota: No puedo cambiar el esquema de base de datos, por lo que la tabla de unión no es negociable.
me gana por 17 segundos ... buena respuesta. – digitaljoel