1.思路重要,首先我们可以结合生活实例,比如省和市的案例:每个地方只有一个省,但是一个省不止一个市。这就是一对多的案例
所以今天Tiny就结合省市的这个案例跟大家演示一下一对多。
2.代码演示:
<1>
省的实体类province
package com.zking.entity;
import java.util.HashSet;
import java.util.Set;
public class Province {
private int pid;
private String pname;
private Set<City> cities=new HashSet<City>();
public Set<City> getCities() {
return cities;
}
public void setCities(Set<City> cities) {
this.cities = cities;
}
public Province() {
super();
}
public Province(String pname) {
super();
this.pname = pname;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
}
province.hbm.xml
package com.zking.entity;
import java.util.HashSet;
import java.util.Set;
public class Province {
private int pid;
private String pname;
private Set<City> cities=new HashSet<City>();
public Set<City> getCities() {
return cities;
}
public void setCities(Set<City> cities) {
this.cities = cities;
}
public Province() {
super();
}
public Province(String pname) {
super();
this.pname = pname;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
}
<2>
city市的实体类
package com.zking.entity;
public class City {
private int cid;
private String cname;
// private int pid;
private Province province;
public Province getProvince() {
return province;
}
public void setProvince(Province province) {
this.province = province;
}
public City() {
super();
// TODO Auto-generated constructor stub
}
public City(String cname) {
super();
this.cname = cname;
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
// public int getPid() {
// return pid;
// }
// public void setPid(int pid) {
// this.pid = pid;
// }
}
city.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-8-22 15:14:11 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.zking.entity.City" table="CITY">
<id name="cid" type="int">
<column name="CID" />
<generator class="native" />
</id>
<property name="cname" type="java.lang.String">
<column name="CNAME" />
</property>
<!-- <property name="pid" type="int">
<column name="PID" />
</property> -->
<many-to-one name="province" class="com.zking.entity.Province" column="pid"></many-to-one>
</class>
</hibernate-mapping>
test类测试:
package com.zking.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.zking.entity.Card;
import com.zking.entity.City;
import com.zking.entity.Province;
import com.zking.entity.User;
public class TestOneToMany {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void before(){
Configuration configuration=new Configuration
().configure();
sessionFactory = configuration.buildSessionFactory
();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}
@After
public void after(){
transaction.commit();
session.close();
sessionFactory.close();
}
//添加
public void testAdd(){
Province province=new Province("湖南省");
City city1=new City("长沙市");
City city2=new City("娄底市");
City city3=new City("其他市");
province.getCities().add(city1);
province.getCities().add(city2);
province.getCities().add(city3);
city1.setProvince(province);
city2.setProvince(province);
city3.setProvince(province);
session.save(province);
}
}
在此tiny只给大家演示了增加的方法,删除查询修改都差不多,就不在过多演示了