hibernate多對多中間表含有其他屬性的配置
hibernate的多對多對映沒有太多選擇,只能通過中間表來配置關聯關係。
中間表如果沒有其他屬性,只有外來鍵關聯的話,那麼只需要在兩個類中新增set屬性,然後在xml配置檔案中新增set條目即可。
如果中間表有其他屬性,則需要給中間表也建立一個持久層類,然後兩個關聯類分別與其建立一對多關聯
例子如下:
兩個關聯表示user和course,中間表為user_course
user類中新增
private Set<UserCourse> usercourses = new HashSet<UserCourse>();
public Set<UserCourse> getUsercourses() {
return usercourses;
}
public void setUsercourses(Set<UserCourse> usercourses) {
this.usercourses = usercourses;
}
user.hbm.xml中新增
<set name="usercourses" order-by="id" inverse="true">
<key column="userid"></key>
<one-to-many class="com.test.po.UserCourse"/>
</set>
course類中新增
private Set<UserCourse> usercourses = new HashSet<UserCourse>();
public Set<UserCourse> getUsercourses() {
return usercourses;
}
public void setUsercourses(Set<UserCourse> usercourses) {
this.usercourses = usercourses;
}
course.hbm.xml中新增
<set name="usercourses" order-by="id" inverse="true">
<key column="courseid"></key>
<one-to-many class="com.test.po.User" />
</set>
usercourse類中新增
private User user;//外來鍵,使用者表
private Course course;//外來鍵,課程表
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
usercourse.hbm.xml中新增
<many-to-one name="user" class="com.test.po.User" column="userid"></many-to-one>
<many-to-one name="course" class="com.test.po.Course" column="courseid"></many-to-one>
現在就能實現兩個表的多對多關聯了。