hibernate一对多

多对一或者一对多

1、单端关联:

 指的是持久化类和映射文件的单端关联
 
 和表的结构没有任何关系
 
 可以从一个持久化类访问到另外一个持久化类,但是反之则访问不到
 
2、双向关联:

 可以从一个持久化类访问到另外一个持久化类,但是反之则也可以

说明:单端关联或者双向关联针对的是持久化类和映射文件。

 

多对一的关系的维护:

1、关系:专指外码    维护外码

在hibernate中,从持久化类中看不出来主外键之间的关系,维护主外键之间的关系是由hibernate内部作用的

在双向的关系中,可以通过两方面来维护主外键之间的关系

在多对一的关系中,维护方在多的一端,可以提高效率

多对一的操作:

1、保存操作    级联   cascade  save-update   all  delete

2、删除       级联

 删除customer,也删除相关联的order
 
 删除customer,不删除相关联的order

 

3、解除customer与order的关系

4、改变customer与order的关系

cascade与inverse的区别:

cascade的作用对象是两个对象    在操作一个对象的时候,级联到另外一个对象(两个对象之间的绑定)

inverse  是维护主外键之间的关系    是对象和列的关系

 

 

时间: 2024-11-10 13:14:53

hibernate一对多的相关文章

Hibernate一对多(单向)

[标题]:Hibernate一对多(单向) [时间]:2009-6-12 [摘要]:单向一对多关联只需要在"一方"进行配置即可,"多方"无需额外配置. [关键字]:外键,inverse,Hibernate,Set,一对多,单向,ORM,mapping,关系数据库,映射 [环境]:MyEclipse7 , JDK6,Hibernate3.2,Tomcat6,MySQL 5.1.34-community [作者]:Winty (wintys@gmail.com) htt

关于hibernate 一对多插入数据的问题

问题描述 关于hibernate 一对多插入数据的问题 现在出现了一个问题, 主表和副表通过1对多的关系关联配置,所有的配置都完成了. 在做关联处理时,副表的查询是成功的,但是在对副表进行插入数据的处理时, 数据不能被插入,从打印的日志来看,副表的insert语句都没有被执行, 请问有没有人遇到过这种问题?是什么原因造成的?谢谢 解决方案 Hibernate一对多增删改查 解决方案二: 估计是hibernate配置时cascade的问题,如果是注解的看http://blog.csdn.net/z

hibernate一对多查询问题

问题描述 hibernate一对多查询问题 我想用hibernate查询得到的list集合转化为json后是这种效果[{"分类id":"1","商品":[{"分类id":"1","name":".商品1"},{"分类id":"1","name":"商品2"}]},{"分类id&q

hibernate一对多关系中的外外键值无法获取

问题描述 hibernate一对多关系中的外外键值无法获取 !表中的外键cid值没有生成](http://img.ask.csdn.net/upload/201508/05/1438784830_640743.png) 解决方案 你其实可以不用写,可以自动生成相应的映射关系,这些主外键会自动帮你生成,至于怎么自动生成,你可以百度下,到处是的 解决方案二: 你其实可以不用写,可以自动生成相应的映射关系,这些主外键会自动帮你生成,至于怎么自动生成,你可以百度下,到处是的 解决方案三: http://

java Hibernate 一对多自身关联问题_java

Hibernate 一对多自身关联问题  这个很难描述清楚,只能引用CSDN中我提问的帖子了: http://topic.csdn.net/u/20080711/16/7494bf10-48ca-4b2e-8a01-303e647f5516.html 方法,在表单中取得一个PO,然后session.save(po),如下:   程序代码             tx = session.beginTransaction();         session.save(catalog);     

关于hibernate 一对多级联查询的问题,生成的sql报语法错误

问题描述 描述:主要是实体一对多的关系,不希望懒加载,需要急加载.配置完后,查询时报sql语法错误,将sql语句拷到mysql中执行,把{}去除,花括号其实就是映射的数据库字段,执行成功.仔细看了一下错误,象是hibernate执行时没有把花括号{}给替换成数据库字段名称,直接带着花括号查询了,当然会报错,为什么会出现这种问题,没有找到原因.有没有朋友知道的?po类:一对多的关系,Jpa配置如下(单向关联) @SuppressWarnings("serial")@Entity@Tabl

Struts2 Hibernate 一对多保存问题

问题描述 我知道Hibernate的一对多保存,需要建立一些关系,如A对应多个B,那么A.getBs().add(B),同时B也要setA(A),也就是说保存前他们要建立双向关系,然后保存.现在我结合struts2和hibernate,想通过struts2传参的自动装配功能,可以在客户端传到Struts2时自动组装好一对多的关系,然后hibernate直接保存.我现在遇到的问题是struts2传参,可以构建A->B的关系,无法实现B->A的关系,即无法自动调用B.setA,请问有谁知道怎么解决

hibernate 一对多关系的疑问!!!!前辈入!!!!!

问题描述 hibernate中自动生成的一对多关系是用hashset来实现的,但是hashset在set和get方面很不方便,不能指定key值尝试换过ArrayList,但是试图save(object)的时候就报错了我的疑问是:这种一对多的关系,hibernate只能用set来实现么?可以用其他带有key值的列表么? 解决方案 解决方案二:可以用list,也可以用map解决方案三:Map,Set,ArrayList都可以,集合字段必须声明为接口或者其他的类型集合也可以,不过要自己编写org.hi

Hibernate一对多关联双向关联代码实现分享_java

1.创建实体类(Customer.java.Orders.java) 复制代码 代码如下: package wck.stu.vo.oneToMany_single; import java.util.HashSet;import java.util.Set; public class Customer {    private String id = "";     private String cName = "";     private String bank