现在的位置: 首页 > 综合 > 正文

Hibernate List 集合属性的配置

2014年01月06日 ⁄ 综合 ⁄ 共 2055字 ⁄ 字号 评论关闭

用List 集合属性时候 会生成两张表, 且是根据  PO 类 的 标识属性 (也就是数据库的主键),与 List 集合生成的表 通过外键关联 形成

用例如下:

1:编写PO类

package zhourj.hibernate.list;

import java.util.ArrayList;
import java.util.List;
/*
 * List 集合的的映射
 * 要求持久集合只能申明为 接口
 */
public class Person {
	private Integer id; // 标识属性
	private String name;
	private int age;
	private List<String> schools = new ArrayList<String>();// 显示初始化
	
	public Integer getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	public List<String> getSchools() {
		return schools;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public void setSchools(List<String> schools) {
		this.schools = schools;
	}
}

2:编写 Person.hbm.xml 部署文件

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="zhourj.hibernate.list">
	<class name="Person" table="person_inf">
		<id name="id">
			<generator class="identity"></generator>
		</id>
			<!-- 映射普通属性 -->
		<property name="name" type="string" column="person_name"></property>
		<property name="age" type="int" column="person_age"></property>
		<!-- 映射List 集合 -->
		<list name="schools" table="school">
			<!-- 映射集合属性 表的外键列 -->
			<key column="personid" not-null="true"></key>
			<!-- 映射集合属性表的集合索引列 -->
			<list-index column="list_order"></list-index>
			<element type="string" column="school_name"></element>
		</list>
	</class>
</hibernate-mapping>

3:编写测试类

package zhourj.hibernate.list;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import zhorj.hibernate.util.HibernateUtil;

public class PersonManager {
	public void  CreateAndStorePerson(){
		Session session = HibernateUtil.currentSession();
		// 开启事物
		Transaction transaction = session.beginTransaction();
		Person person = new Person();
		person.setAge(23);
		person.setName("zhourj");
		List<String> schools = new ArrayList<String>();
		schools.add("湖南工学院");
		schools.add("岳阳县二中");
		person.setSchools(schools);
		session.save(person);
		transaction.commit();
		HibernateUtil.closeSession();
	}
	public static void main(String[] args) {
		new PersonManager().CreateAndStorePerson();
	}
}

4:运行效果如下:

抱歉!评论已关闭.