案例:
person:一個人可以有擔任很多項工作
job:一項工作可以由很多人擔任
這在person和job中就形成了多對多的關係,映射成一張新表。
package com.pk.mapping; import java.util.HashSet; import java.util.Set; public class Job { private int id; private String jobname; private Set people=new HashSet(); public int getId() { return id; } public void setId(int id) { this.id = id; } public String getJobname() { return jobname; } public void setJobname(String jobname) { this.jobname = jobname; } public Set getPeople() { return people; } public void setPeople(Set people) { this.people = people; } }
package com.pk.mapping; import java.util.HashSet; import java.util.Set; public class People { private int id; private String name; private Set jobs=new HashSet(); public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set getJobs() { return jobs; } public void setJobs(Set jobs) { this.jobs = jobs; } }
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.pk.mapping"> <class name="Job" table="t_job"> <id name="id" column="t_job_id"> <generator class="native"></generator> </id> <property name="jobname" column="t_job_name"></property> <set name="people" table="t_job_people" > <!--外键,必须以本表的id作为参照物--> <key column="job_id"></key> <many-to-many class="People" column="people_id" /> </set> </class> </hibernate-mapping>
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.pk.mapping"> <class name="People" table="t_people"> <id name="id" column="t_people_id"> <generator class="native"></generator> </id> <property name="name" column="t_people_name"></property> <set name="jobs" table="t_job_people"> <key column="people_id"></key> <many-to-many class="Job" column="job_id"></many-to-many> </set> </class> </hibernate-mapping>