hibernate的单向一对多

来源:互联网 发布:h5界面设计软件 编辑:程序博客网 时间:2024/05/01 10:21

工具包和实现接口的类都跟上一篇的一样;请参考上篇。不同之处

封装JavaBean的类:

City.java

package www.csdn.net.blank.bean;import java.io.Serializable;public class City implements Serializable{    /** *  */private static final long serialVersionUID = 1L;private Integer id;    private String  name;public City() {super();// TODO Auto-generated constructor stub}public City(Integer id, String name) {super();this.id = id;this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}    }


Province.java

package www.csdn.net.blank.bean;import java.io.Serializable;import java.util.Set;public class Province  implements Serializable{/** *  */private static final long serialVersionUID = 1L;private Integer id;private String name;private Set<City> cities;public Province() {super();}public Province(Integer id, String name) {super();this.id = id;this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<City> getCities() {return cities;}public void setCities(Set<City> cities) {this.cities = cities;}}

Province.hbm.xml

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="www.csdn.net.blank.bean"><class name="Province" table="pro"><id name="id" column="pro_id"><!-- 主键的生成策略 --><generator class="native" /></id><property name="name" column="pro_name" length="40" unique="true" /><!--使用 cascade="all" 来指定全部操作都顺着关联关系级联(cascaded)。默认值是cascade="none",即任何操作都不会被级联(cascaded)。 --><!-- 元素来映射持久化类的 set 类型的属性 name:设定待映射持久化类的属性名。      cascade:设定级联操作的程度。     key子属性:设定与所关联的持久化类对应的表的外键。  column: 指定关联表的外键名 one-to-many子属性:设定所关联的持久化类(集合中存放的对象)。 class: 指定关联的持久化类的类名 --><set name="cities" table="cities" cascade="save-update" lazy="false"><key column="pro_id" /><one-to-many class="City" /></set></class></hibernate-mapping>

City.hbm.xml

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="www.csdn.net.blank.bean"><class name="City" table="cities"><id name="id" column="city_id"><!-- 主键的生成策略 --><generator class="native" /></id><property name="name" column="city_name" length="40"unique="true" /></class></hibernate-mapping>

测试类


package www.csdn.net.blank.junit;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import org.junit.Test;import www.csdn.net.blank.bean.City;import www.csdn.net.blank.bean.Province;import www.csdn.net.blank.dao.BaseDao;import www.csdn.net.blank.dao.impl.BaseDaoImpl;import www.csdn.net.blank.util.HiberUtil;public class Test1 {@Testpublic void test() {HiberUtil.openSession();}private BaseDao baseDao=new BaseDaoImpl();@Testpublic void save(){Province province=new Province();province.setName("河北省1");Set<City> entity=new HashSet<City>();entity.add(new City(null,"baoding"));entity.add(new City(null,"shijia"));entity.add(new City(null,"cang"));province.setCities(entity);baseDao.saveObject(province);}@Testpublic void  getupdate(){Province entity=(Province) baseDao.getObjectById(Province.class, 1);if(entity!=null){System.out.println(entity.getName());Set<City> e=entity.getCities();Iterator<City> it= e.iterator();while(it.hasNext()){City c=it.next();System.out.println(c.getName());}/*entity.setName("河南省1");baseDao.updateObject(entity);*/}}@Testpublic void delete(){Province pro=(Province) baseDao.getObjectById(Province.class,1);    baseDao.deleteObject(pro);}}


0 0
原创粉丝点击