Ho una tabella USER e una tabella COURSE. Un UTENTE può avere molti CORSI e un CORSO molti UTENTI. La tabella di giunzione contiene un valore di RUOLO che determina il ruolo che l'utente ha in un CORSO (ad esempio Istruttore, Studente, ecc.). Ho bisogno di un po 'come associare questo ruolo al CORSO per ogni UTENTE.Valore di mapping nella tabella di congiunzione all'entità
Se inserisco il ruolo nella classe Course, non può funzionare, poiché un corso ha molti utenti e viceversa nella classe User.
Ecco quello che ho finora:
@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: Non riesco a cambiare lo schema del database, in modo che la tabella di collegamento non è negoziabile.
mi ha battuto di 17 secondi ... bella risposta. – digitaljoel