1、创建表,用上一篇文章的数据库,不写了
2、创建产品表和类型表的实体
ProductEntity.java
package com.entity;
import java.util.Set;
/**
* 产品表实体
* Created by lvjun on 2018-03-26.
*/
public class ProductEntity {
int id;
String name ;
float price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
CategoryEntity.java
package com.entity;
import java.util.Set;
/**
* 类型表实体
* Created by lvjun on 2018-03-26.
*/
public class CategoryEntity {
int id;
String name;
//添加产品属性ProductEntity,Set集合
Set<ProductEntity> productEntities;
public Set<ProductEntity> getProductEntities() {
return productEntities;
}
public void setProductEntities(Set<ProductEntity> productEntities) {
this.productEntities = productEntities;
}
//类型属性
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3、创建映射文件
CategoryEntity.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.entity">
<class name="CategoryEntity" table="category">
<id name="id" column="id">
<generator class="native">
</generator>
</id>
<property name="name" />
<!--
设置类型表对产品表一对多关系:
name=CategoryEntity实体类中的productEntities属性
lazy=不使用延迟加载
-->
<set name="productEntities" lazy="false">
<!-- 外键是cid,可以为空-->
<key column="cid" not-null="false" />
<!--一对多所对应的类是产品类实体ProductEntity-->
<one-to-many class="ProductEntity" />
</set>-->
</class>
</hibernate-mapping>
ProductEntity.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.entity">
<class name="ProductEntity" table="product">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="name" />
<property name="price" />
</class>
</hibernate-mapping>
4、创建hibernate.cfg.xml核心配置文件src路径下,别进包里去了
//同上一篇的配置一样,详情看上一篇:多对一 Many-To-One
5、创建测试类
package com.test;
import com.entity.CategoryEntity;
import com.entity.ProductEntity;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import java.util.Set;
/**
* 一对多关系
* 一个类型对应多个产品
* Created by lvjun on 2018-03-26.
*/
public class OneToMany {
public static void main(String[] args) {
SessionFactory sessionFactory =new Configuration().configure().buildSessionFactory();
Session session =sessionFactory.openSession();
session.beginTransaction();
//先获取类型cid = 2 的 类型
CategoryEntity categoryEntity = (CategoryEntity) session.get(CategoryEntity.class,2);
//取出对应2类型的产品 getProductEntities
Set<ProductEntity> productEntities =categoryEntity.getProductEntities();
for (ProductEntity productEntity : productEntities){
System.out.println("类型为2的产品名称有:" + productEntity.getName());
}
session.beginTransaction().commit();
session.close();
sessionFactory.close();
}
}