示例:一个类别(Category)下面有多个商品(Product),多个商品对应对应同一类别
public class Category { private Integer id; private String name; private Set<Product> products = new HashSet<Product>(); // getter and setter }
public class Product { private Integer id; private String name; private Double price; private Category category; // getter and setter }
用XML映射
<hibernate-mapping package="org.monday.hibernate4.domain"> <class name="Category" table="tbl_category"> <id name="id"> <generator class="identity" /> </id> <property name="name" /> <set name="products" inverse="true"> <key column="category_id" /> <one-to-many class="Product" /> </set> </class> </hibernate-mapping>
<hibernate-mapping package="org.monday.hibernate4.domain"> <class name="Product" table="tbl_product"> <id name="id"> <generator class="identity" /> </id> <property name="name" /> <property name="price" /> <many-to-one name="category" class="Category" column="category_id" not-null="true"/> </class> </hibernate-mapping>
用@Annotation映射
@Entity @Table(name = "tbl_category") public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; // 使用泛型的话,targetEntity可以不制定 @OneToMany(mappedBy = "category") private Set<Product> products = new HashSet<Product>(); // getter and setter }
@Entity @Table(name = "tbl_product") public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private Double price; @ManyToOne @JoinColumn(name = "category_id", nullable = false) private Category category; // getter and setter }
测试代码
Product p = new Product(); p.setName("hibernate"); p.setPrice(99.9); Category c = new Category(); c.setName("book"); c.getProducts().add(p); p.setCategory(c); session.save(c); // 先插入一的一方 session.save(p);
SQL schema
Hibernate: create table tbl_category ( id integer not null auto_increment, name varchar(255), primary key (id) ) Hibernate: create table tbl_product ( id integer not null auto_increment, name varchar(255), price double precision, category_id integer, primary key (id) ) Hibernate: alter table tbl_product add index FK2BA956E5535EE4C (category_id), add constraint FK2BA956E5535EE4C foreign key (category_id) references tbl_category (id) Hibernate: insert into tbl_category (name) values (?) Hibernate: insert into tbl_product (name, price, category_id) values (?, ?, ?)
相关推荐
Hibernate双向一对一关联映射(注解版)
Hibernate映射一对多关联关系
hibernate双向一对多关联映射(注解版)
Hibernate对象关系映射一对多 很基础等文档
hibernate双向一对多关联映射(XML)
hibernate基于 一对多、多对一映射写的一个增加,查询,删除,修改的demo,内附数据库脚本
hibernate关联映射详解SSH 多对多,一对多关系对象映射
使用hibernate技术实现对MySQL数据库的一对多和多对一的映射。下载后对应着改一下自己的IP地址就好了。
一个老师可以教多个学生 【一对多映射】 多个学生可以被一个老师教【多对一映射】 部门与员工: 一个部门有多个员工【一对多映射】 多个员工属于一个部门【多对一映射】 1.2:多对多,举例说明: 项目和开发员工:...
Hibernate一对多映射
hibernate初学者学习入门之一对多实体映射关系源码
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
hibernate单向一对多关联映射(注解版)
Hibernate 多表映射关系配置 如,一对一 多对一 多对多等
hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了
Hibernate
Hibernate一对多,多对一映射
简单的Hibernate的N对N关系的映射,这里主要的只是谈到了关于如何映射一对一,多对一,多对多的单向和双向映射。 当然,其实所谓的单双向映射最终还是要表现在select时的作用,但是这一部分并未介绍。 我想,要想搞...
hibernate的简单搭建、hibernate的一对多映射关系
这个是针对初学Hibernate一对多主键关联映射的源代码 ,希望对初学者有所帮助,开发环境是MyEclipse7.5和HIbernate3.2