1. 程式人生 > >hibernate多對多中間表含有其他屬性的配置

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>

現在就能實現兩個表的多對多關聯了。