Hibernate学习之many-to-many篇

Hibernate中的Many-to-Many篇

 

Hibernate配置文件中many-to-many set字段的属性说明:

 

属性用法举例
name映射的属性name="name"
table映射的数据库表name="Person_Orgnization"
lazy延迟加载lazy=true|false
cascade级联操作cascade=all
inverse关联由谁维护inverse=true

 

 

 

 

 

 

 

 

 

 

表结构关系:

    Person(id)-->Person_Orgnization(pid,oid)-->Orgnization(id)

 

xml文件:

Person.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
 <class catalog="mysql" name="com.bintang.web.system.po.Person" table="person">
  <id name="id" type="java.lang.Integer">
   <column name="id"/>
   <generator class="native"/>
  </id>
  <property generated="never" lazy="false" name="name" type="java.lang.String">
   <column length="30" name="name"/>
  </property>
  <property generated="never" lazy="false" name="password" type="java.lang.String">
   <column length="32" name="password"/>
  </property>
  <property generated="never" lazy="false" name="age" type="java.lang.Integer">
   <column name="age"/>
  </property>
  <property generated="never" lazy="false" name="phone" type="java.lang.String">
   <column length="15" name="phone"/>
  </property>
  <property generated="never" lazy="false" name="sex" type="java.lang.String">
   <column length="1" name="sex"/>
  </property>
  <property generated="never" lazy="false" name="address" type="java.lang.String">
   <column length="200" name="address"/>
  </property>
  <property generated="never" lazy="false" name="account" type="java.lang.String">
   <column length="20" name="account"/>
  </property>
  <property generated="never" lazy="false" name="leader" type="java.lang.Integer">
   <column name="leader"/>
  </property>
  <set name="orgs" table="Person_Orgnization">
   <key column="pid"/>
   <many-to-many class="com.bintang.web.system.po.Orgnization" column="oid"/>
  </set>
 </class>
</hibernate-mapping>

 

Orgnization.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
 <class catalog="mysql" name="com.bintang.web.system.po.Orgnization" table="orgnization">
  <id name="id" type="java.lang.Integer">
   <column name="id"/>
   <generator class="native"/>
  </id>
  <property generated="never" lazy="false" name="name" type="java.lang.String">
   <column length="20" name="name"/>
  </property>
  <property generated="never" lazy="false" name="level" type="java.lang.Integer">
   <column name="level"/>
  </property>
  <property generated="never" lazy="false" name="sn" type="java.lang.String">
   <column length="100" name="sn"/>
  </property>
  <set name="Persons" table="person_orgnization">
   <key column="oid"/>
   <many-to-many class="com.bintang.web.system.po.Person" column="pid"/>
  </set>
 </class>
</hibernate-mapping>

 

JAVA代码:

Person.java

package com.bintang.web.system.po;

import java.util.HashSet;
import java.util.Set;

/**
 * Person entity. @author MyEclipse Persistence Tools
 */

public class Person implements java.io.Serializable {

	// Fields

	private Integer id;
	private String name;
	private String password;
	private Integer age;
	private String phone;
	private String sex;
	private String address;
	private String account;
	private Integer leader;
	private Set<Orgnization> orgs = new HashSet<Orgnization>();

	// Constructors

	/** default constructor */
	public Person() {
	}

	/** full constructor */
	public Person(String name, String password, Integer age, String phone,
			String sex, String address, String account, Integer leader) {
		this.name = name;
		this.password = password;
		this.age = age;
		this.phone = phone;
		this.sex = sex;
		this.address = address;
		this.account = account;
		this.leader = leader;
	}

	// Property accessors

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Integer getAge() {
		return this.age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getPhone() {
		return this.phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getSex() {
		return this.sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getAddress() {
		return this.address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getAccount() {
		return this.account;
	}

	public void setAccount(String account) {
		this.account = account;
	}

	public Integer getLeader() {
		return this.leader;
	}

	public void setLeader(Integer leader) {
		this.leader = leader;
	}

	public Set getOrgs() {
		return orgs;
	}

	public void setOrgs(Set orgs) {
		this.orgs = orgs;
	}

}

 

Orgnization.java

package com.bintang.web.system.po;

import java.util.HashSet;
import java.util.Set;

/**
 * Orgnization entity. @author MyEclipse Persistence Tools
 */

public class Orgnization implements java.io.Serializable {

	// Fields

	private Integer id;
	private String name;
	private Integer level;
	private String sn;
	private Set<Person> persons = new HashSet<Person>();

	// Constructors

	/** default constructor */
	public Orgnization() {
	}

	/** full constructor */
	public Orgnization(String name, Integer level, String sn) {
		this.name = name;
		this.level = level;
		this.sn = sn;
	}

	// Property accessors

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getLevel() {
		return this.level;
	}

	public void setLevel(Integer level) {
		this.level = level;
	}

	public String getSn() {
		return this.sn;
	}

	public void setSn(String sn) {
		this.sn = sn;
	}

	public Set<Person> getPersons() {
		return persons;
	}

	public void setPersons(Set<Person> persons) {
		this.persons = persons;
	}

}

 这样就实现了一个简单的many-to-many的多对多的关联

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值