hibernate双向一对多关联关系

双向的多对一(一对多)关联关系:

其实这种关联关系就是把单向的多对一和单向的一对多的关联关系的整合。

 

 

只是说明一点:

代码:

 


package qau.edu.ren;

import java.util.Date;

import org.hibernate.Session;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

public class Test {

public static void main(String[] args) {

//               创建configuration,加载配置文件;

Configuration con = new Configuration().configure();

//               创建Session;

Session session = con.buildSessionFactory().openSession();

//               开始事务 ;

Transaction tr = session.beginTransaction();

//               实例化对象;

Customer customer = new Customer();

customer.setName("AAAAAA");

Order o1 = new Order();

Order o2 = new Order();

o1.setName("aa");

o1.setDate(new Date());

o2.setName("bb");

o2.setDate(new Date());

o1.setCus(customer);

o2.setCus(customer);

customer.getOrders().add(o2);

customer.getOrders().add(o1);

//

//

session.save(customer);

session.save(o2);

session.save(o1);

//

//

//               Customer cus = (Customer)session.get(Customer.class, 1);

//

//               Set<Order> orders = cus.getOrders();

tr.commit();

session.close();

}

}

 

 

 

下面是Customer的关系映射文件:

 

 


<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="qau.edu.ren">

<class name="Customer" table="t_customer">

<id name="id" column="c_id">

<generator class="native"></generator>

</id>

<property name="name" column="c_name"/>

<set name="orders" table="t_order" inverse="true">

<key column="c_id"/>

<one-to-many class="Order"/>

</set>

</class>

</hibernate-mapping>

 

 

 

 

 

上面的inverse属性用于控制反转,没有设置这个属性的时候,不管是怎样的save顺序,都会出现update,这是因为这是双向的关联关系,关联关系由双方记性维护。

 

inverse<set>中的一个属性,当他的设置为true的时候,表示对方为主动方,表示关联关系由对方进行维护。

时间: 2024-10-15 17:44:35

hibernate双向一对多关联关系的相关文章

(八)Hibernate的一对多关联关系

一.概述 例如,以客户(Customer)和订单(Order)为例,一个客户能有多个订单,一个订单只能有一个客户. 从Customer到Order是一对多关联,在java类中的面向对象设计应该一个Customer对象包含多个Order对象,因此应该定义一个集合,来包含所有的Order对象. 从Order到Customer是多对一关联,在java类中设计每个Order对象需要关联一个Customer对象,因此Order类中应该定义一个Cutomer类型的属性,来引用关联的customer对象. 但

8、双向一对多的关联关系(等同于双向多对一。1的一方有对n的一方的集合的引用,同时n的一方有对1的一方的引用)

双向一对多关联关系 ”双向一对多关联关系“等同于”双向多对一关联关系“:1的一方有对n的一方的集合的引用,同时n的一方有对1的一方的引用. 还是用客户Customer和订单Order来解释: ”一对多“的物理意义:一个客户可以有多个订单,某个订单只能归宿于一个客户. ”双向“的物理意义:客户知道自己有哪些订单,订单也知道自己归宿于哪个客户.也就是说,通过客户对象可以检索到其拥有哪些订单:同时,通过订单也可以查找到其对应的客户信息.这是符合我们业务逻辑需求. 到现在为止(结合前面两节的阐述)我们可

[原创]java WEB学习笔记82:Hibernate学习之路---映射 一对多关联关系,配置,CRUD方法测试及注意点

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

hibernate 一对多关联关系(详细分析)

在领域模型中, 类与类之间最普遍的关系就是关联关系. 在 UML 中, 关联是有方向的. 以 Customer 和 Order 为例: 一个用户能发出多个订单, 而一个订单只能属于一个客户. 从 Order 到 Customer 的关联是多对一关联; 而从 Customer 到 Order 是一对多关联 单向关联 双向关联 单向 n-1 单向 n-1 关联只需从 n 的一端可以访问 1 的一端 域模型: 从 Order 到 Customer 的多对一单向关联需要在Order 类中定义一个 Cus

Hibernate5.2关联关系之双向一对多(三)

                                                       Hibernate之双向一对多(三) 一.简介 本篇博文接着上一章的内容接着开展,代码也是在上篇博文的基础上修改. 二.hbm文件的方式 Customer.hbm.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hi

(转)Hibernate框架基础——一对多关联关系映射

http://blog.csdn.net/yerenyuan_pku/article/details/52746413 上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即集合元素是普通类型).现在从本文开始我们就要介绍实体类型的集合(即集合元素是另一个实体)了. 一对多关联关系映射 我们还是以一个活生生的例子来详解一对多关联关系映射吧!就以部门和员工的关系为例. 单向关联:仅仅建立从Employee到Department的多对一关联,即仅仅在Employee类中定义

jpa的双向一对多和双向一对一关联关系

在分享之前先给大家看两个异常,应该说这一类的异常还是很常见的,主要原因是jar包冲突 异常1: java.lang.NoSuchFieldError: INSTANCE at org.hibernate.type.BasicTypeRegistry.<init>(BasicTypeRegistry.java:94) at org.hibernate.type.TypeResolver.<init>(TypeResolver.java:59) at org.hibernate.cfg

Hibernate实现双向一对多,多对一

人与电话号码是一对多 ,多对一的关系 @Entity @Table(name="tb_person") public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String name; @OneToMany(mappedBy = "person") /*在双向一对多关系中 将控制权交给“多”方 */ private List&l

jpa 双向一对多,多对一关联关系

1.1.  双向一对多 Order.java package com.morris.entity; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import ja