【发布时间】:2011-09-29 19:25:11
【问题描述】:
我有一个 USER 表和一个 COURSE 表。一个 USER 可以有很多 COURSES,而一个 COURSE 可以有很多 USERS。联结表包含一个 ROLE 值,该值确定用户在课程中的角色(即讲师、学生等)。我需要一些如何将此角色与每个用户的课程相关联。
如果我将角色放在 Course 类中,它就无法工作,因为 Course 有很多用户,反之亦然在 User 类中。
这是我目前所拥有的:
@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;
...
注意:我无法更改数据库架构,因此联结表是不可协商的。
【问题讨论】:
标签: jpa