many-to-many 多对多关联

多对多关联 是一种常用的表(A)与表(B)之间的关联,多条数据对应多条数据,这样我们就使用一个关系表来关联A表和B表的数据,关联表中一般是放入A表和B表中的主键,所以创建两表中的***.hbm.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>
                <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" />
这样就可以实现两个表之间实现多对多的关联



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值