many-to-many 多对多关联
2017-08-22 10:47
127 查看
多对多关联 是一种常用的表(A)与表(B)之间的关联,多条数据对应多条数据,这样我们就使用一个关系表来关联A表和B表的数据,关联表中一般是放入A表和B表中的主键,所以创建两表中的***.hbm.xml必须要加:
TPerson.java(A表的创建类)
TProject.java(B表的创建类)
TProject.hbm.xml(B表的配置文件)
要记住必须在hibernate.cfg.xml中添加这两配置文件的映射:
<set name="当A表的关联属性" table="关联表表名" inverse="true"> <key> <column name="关联表的列名(最好是和A表的主键名相同)" /> </key> <many-to-many class="B表的地址" column="关联表关联的B表的列名"/> </set>例子:项目和参加人员的关联
TPerson.java(A表的创建类)
public class TPerson { private String personID; private String personName; private String personDesc; private Set projectSet = new HashSet();//关联属性 public String getPersonID() { return personID; } public void setPersonID(String personID) { this.personID = personID; } public String getPersonName() { return personName; } public void setPersonName(String personName) { this.personName = personName; } public String getPersonDesc() { return personDesc; } public void setPersonDesc(String personDesc) { this.personDesc = personDesc; } public Set getProjectSet() { return projectSet; } public void setProjectSet(Set projectSet) { this.projectSet = projectSet; } }
TProject.java(B表的创建类)
public class TProject { private String projectId; private String projectName; private String projectDesc; private Set personSet = new HashSet(); 关联属性 public String getProjectId() { return projectId; } public void setProjectId(String projectId) { this.projectId = projectId; } public String getProjectName() { return projectName; } public void setProjectName(String projectName) { this.projectName = projectName; } public String getProjectDesc() { return projectDesc; } public void setProjectDesc(String projectDesc) { this.projectDesc = projectDesc; } public Set getPersonSet() { return personSet; } public void setPersonSet(Set personSet) { this.personSet = personSet; } }TPerson.hbm.xml(A表的配置文件)
<hibernate-mapping> <class name="com.tjtc.test.TPerson" table="t_person" > <id name="personID" column="t_person_id"> <generator class="assigned" /> </id> <property name="personName" type="java.lang.String"> <column name="t_person_name" length="30" /> </property> <property name="personDesc" type="java.lang.String"> <column name="t_person_desc" length="50" /> </property> <set name="projectSet" table="r_project_person" > <key> 4000 <column name="r_person_id" /> </key> <many-to-many class="com.tjtc.test.TProject" column="r_project_id"/> </set> </class> </hibernate-mapping>
TProject.hbm.xml(B表的配置文件)
<hibernate-mapping> <class name="com.tjtc.test.TProject" table="t_project" > <id name="projectId" column="t_project_id"> <generator class="assigned" /> </id> <property name="projectName" type="java.lang.String"> <column name="t_project_name" length="40" /> </property> <property name="projectDesc" type="java.lang.String"> <column name="t_project_desc" length="50" /> </property> <set name="personSet" table="r_project_person" inverse="true"> <key> <column name="r_project_id" /> </key> <many-to-many class="com.tjtc.test.TPerson" column="r_person_id"/> </set> </class> </hibernate-mapping>
要记住必须在hibernate.cfg.xml中添加这两配置文件的映射:
<mapping resource="com/tianheng/test/TPerson.hbm.xml" /> <mapping resource="com/tianheng/test/TProject.hbm.xml" />这样就可以实现两个表之间实现多对多的关联
相关文章推荐
- Hibernate基础之九:多对多,单/双向关联 @ManyToOne @OneToMany
- Hibernate学习笔记:一对多的关联关系(one-to-many) 双向关联
- 多对一关联映射(many-to-one)
- hibernate 多对一(Many-to-one)单向关联
- Hibernate关系映射(六)多对多单向关联@ManyToMany Annotation方式
- hibernate注解版关联映射Many-to-One/Many-to-Many等&异常处理
- Hibernate 、多表关联映射-多对一关系(many-to-one)
- NHibernate的关联映射(one-to-one,one-to-many,many-to-many)以及cascade分析
- JPA Onetomany注解外健关联项设为null
- hibernate 一对多(one-to-many)双向关联
- hibernate多对多关联 many to many
- NHibernate的关联映射(one-to-one,one-to-many,many-to-many)以及cascade分析
- Hibernate 、多表关联映射-多对一关系(many-to-one)
- django manytomany field修改关联数据库问题
- hibernate零配置表自身(OneToMany)关联
- Hibernate 之many-to-one 单向多对一关联示例
- JPA OneToMany双向关联
- Ruby on Rails,一对多关联(One-to-Many)
- NHibernate的关联映射(one-to-one,one-to-many,many-to-many)以及cascade分析
- Hibernate的many-to-many双向关联的配置办法