hibernate级联与反向】的更多相关文章

cascade:设置本表与关联表之间的级联操作,如:设置为save-update,则插入或更新对象时同时保存或更新另一端的表,但不会产生关联关系数据,除非inverse为false. inverse:设置是否对关系表进行维护,true为反向,由另一端维护关系. 两者并无冲突. 可参考:http://www.cnblogs.com/amboyna/archive/2008/02/18/1072260.html…
在JavaHibernate中,双向多对一的操作一直是一个重点难点,本篇文章就是来探讨这个问题. 双向多对一:一个班级对应多个学生,多个学生同属于一个班级,通过班级信息可以查到班级内的学生,通过学生可以查到学生所在班级.(单向则有一方不能通过己方查到对方信息) 重点难点: 1.inversr属性:反转.值:true  false .当其值在<One>方为TRUE指的是将维护关系的控制权交给多方,程序中我们一般把维护关系的权限交给多方.反之,控制权在一方.因为当多方值过多时,一方维护成本较大,导…
首先hibernate级联删除的前提是,首先需要在映射文件中配置,配置多表之间的关联关系: 下面以部门表(Dept)和员工表(Emp)为例: 1.在Emp.hbm.xml映射文件中配置many-to-one关系 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.h…
cascade(级联) 级联在编写触发器时经常用到,触发器的作用是当 主控表信息改变时,用来保证其关联表中数据同步更新.若对触发器来修改或删除关联表相记录,必须要删除对应的关联表信息,否则,会存有脏数据.所以,适当 的做法是,删除主表的同时,关联表的信息也要同时删除,在hibernate中,只需设置cascade属性值即可. CascadeType.PERSIST:级联新增(又称级联保存):对order对象保存时也对items里的对象也会保存.对应EntityManager的presist方法…
EJB3 支持的操作类型 /** * Cascade types (can override default EJB3 cascades */ public enum CascadeType { ALL, PERSIST, MERGE, REMOVE, REFRESH, DELETE, SAVE_UPDATE, REPLICATE, /** @deprecated use @OneToOne(orphanRemoval=true) or @OneToMany(orphanRemoval=true…
在级联更新的时候,数据库中的数据是增加的,只是外键不存在,导致这样的问题产生的原因是,字表主键ID没有添加到集合中,导致Hibernate找不到子项而执行更新.…
上一篇介绍了Hibernate持久化对象时候的级联操作.本篇介绍读取时候的级联操作. 还是用上一篇的样例.一份问卷有多个问题.可是每一个问题仅仅能属于一份问卷. 我们先看測试用例: @Test public void testReadFromQuestionnaire(){ Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); Questionnaire qn = (Questionna…
声明: 1.本文系原创,非抄袭或转载过来的. 2.本文论点都亲手做过实验论证. 3.本文所讲的Hibernate配置都基于注解的方式,hbm语法未提供. 非常多人对持久层概念搞不清JPA.Hibernate.EJB3.0的关系,这里做一下简单的说明:JPA是一个持久层设计接口,EJB3.0和Hibernate是详细的实现类,EJB3.0和Hibernate的功能近似相等的(Hibernate没有Session Bean,Spring MVC3的SessionAttribute跟Session B…
声明: 1.这篇文章是原创.非复制或转载过来. 2.在本文中,参数都亲自做过实验证明. 3.这篇文章谈到了Hibernate配置基于注释的方法.hbm语法不可用. 不清JPA.Hibernate.EJB3.0的关系,这里做一下简单的说明:JPA是一个持久层设计接口.EJB3.0和Hibernate是详细的实现类.EJB3.0和Hibernate的功能近似相等的(Hibernate没有Session Bean,Spring MVC3的SessionAttribute跟Session Bean近似)…
总结: Cascade:对级联操作进行限制,有如下几个参数: all : 所有情况下均进行关联操作.  none:所有情况下均不进行关联操作.这是默认值.  save-update:在执行save/update/saveOrUpdate时进行关联操作.  delete:在执行delete时进行关联操作. Inverse:在一对多模型中,只能在一的一方设置,inverse的作用就是在级联发生后,会再次更新子表数据的外键为主表的主键.确保子表外键不会为空. 下面演示一个班级学生的例子(一对多): 班…
hibernate的级联可以说是hibernate最重要的部分,只有深入了解了级联的特性与用法,才能运用自如. 这次讨论一对多的情况,所以就使用博客项目的用户表和博客表作为示例,来一起学习hibernate的级联 基本准备 文件结构: hibernate核心配置文件hibernate.cfg.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration P…
在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作时,会同时保存 与其关联的实体,当然这种额外操作的产生取决于你是否在当前实体的配置文件中对关联实体的元素配置了 Cascade属性. 而需要进行级联的操作可能涉及到增加,修改,删除等相应的数据库操作,具体Cascade的取值则 分为多种,如all,表示针对所有操作都会进行级联,如save-updat…
Hibernate主要支持两种查询方式:HQL查询和Criteria查询.前者应用较为广发,后者也只是调用封装好的接口. 现在有一个问题,就是实现多表连接查询,且查询结果集不与任何一个实体类对应,怎么解决呢? 举个例子: 现在有两个表,一个users用户表, 一个goods商品表,每个用户可以有多个商品,而一个商品只能对应一个用户. users表中的字段:userId,userName,telephone,address goods表中的字段:goodsId,goodsName,userId 现…
如果cascade属性是默认值"none",当hibernate删除一个持久化对象的时候,不会自动删除与它关联的其他持久化对象.如果希望自动删除它关联的其他持久化对象,可以把casacde属性设为"delete"; <set name="students" cascade="delete" inverse="true"> <key column="school_id"/…
Servlet.service() for servlet default threw exception org.hibernate.PropertyValueException: not-null property references a null or transient value: entity.Favoritebook.user  at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)  a…
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1 出现这一错误的主要原因有两个       使用的是hibernate的saveOrUpdate方法保存实例.saveOrUpdate方法要求ID为null时才执行SAVE,在其它情况下执行UPDATE.在保存实例的时候是新增,但你的ID不为null,…
< many-to-one>和< one-to-many>属性的对象级联关系在转换时会造成死循环,报stackOverFlowException. 比如下面这段: @OneToMany(cascade=CascadeType.ALL,mappedBy="parent",fetch=FetchType.EAGER) public List<Menu> getChildren() { return children; } public void setC…
在一对多的情形下如 Cinema - > Screen; 1.正常在不设置级联(casCade)的情况下 删除一的一方(Cinema)会报外键关联异常 (Screen 中包含Cinema的外键):这个时候可以先取出Cinema中的所有Screen集合后在删除所有的Screen, 完毕后在删除 Cinema 这样就ok; 2.但是在设置了级联的情形下,在一的一方Cinema中设置了CascadeType.ALL后(这样在保存一个Cinema的时候方便保存所有的Screen),在按照上面的方法删除多…
异常:org.hibernate.TransientObjectException: object references an unsaved transient instance 解决方法: XML文件配置: <many-to-one name="role" class="com.egf.modules.actions.Wtdjb" cascade="save-update,persist" fetch="select"…
在删除主表数据时,报了一个异常 Cannot delete or update a parent row: a foreign key constraint fails 原因是主表中还包含字表的数据,不能删除与这张表或数据有关联的字段,所以无法删除 解决办法:在创建数据库的外键时,将删除的动作配置由RESTRICT改成cascade,就可以解决.…
cascade属性的可能值有 all: 所有情况下均进行关联操作,即save-update和delete. none: 所有情况下均不进行关联操作.这是默认值. save-update: 在执行save/update/saveOrUpdate时进行关联操作. delete: 在执行delete 时进行关联操作. all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点.比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,此boo…
Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade: none,all,save-update,delete, lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many).一般对many-to-one,many-to-many不设置级联,在<…
Hibernate级联删除 上一篇文章学习了级联保存和更新,这个级联删除应该很好理解的.一样的道理,删除一方,同时删除有关联的一方. https://www.cnblogs.com/deepSleeping/p/9978296.html 同样有方向性. 删除客户,客户下的订单也同样删除. 用户表: 订单表: 业务:删除id值为1的客户,想要的效果:同时删除id值为1的客户下的所有订单 1.配置customer.hbm.xml文件(cascade = "delete") <!--…
针对<struts-hibernate-ajax完成区县和街道级联下拉框功能>进行补充,上一篇中,要在action中拼接JSON格式字符串,很容易手抖.直接用json处理一下转成json格式字符串即可.但之前也讲过,json对于hibernate级联关系的解析,不是很到位啊! 所以ajax那边就得层层循环剥离,找出想要的结果 action: 用的是 import com.alibaba.fastjson.JSON; 具体的jar包请自行百度!! public String getStreets…
hibenate的面试总结. 可能现在大家常常还会遇到一个些面试的时候问一些关于hibernate的问题,我个人觉得,这些东西一般做过开发的人在使用上没有任何的问题的,但是如果是要你来说就不一定能够说好的,下面是从goole上找的一些常见的面试. 1.Hibernate session接口的get和load方法有何异同? 答: 其实它们也没有什么不同的, 作用其实都是一样的,但是有一定的区别,get是每次都会从数据库取数据以保证数据的可靠性,而load会返回proxy,相当于是一个存根,它的值会…
在Struts-config.xml中对ActionForm Bean的生命周期用scope进行定义,可用的选项有:pageContext(缺省).request(常用).session.application,分别对应于页作用域.请求域.会话域和应用程序域. TestForm testForm = (TestForm) request.getAttribute( “testForm” );//不推荐使用 Struts标记库 Bean标记(Struts-bean.tld):用来在JSP页面中管理…
    前言:Session接口是Hibernate向应用程序提供的操作数据库的主要接口,它提供了基本的增删查改方法,而且Session具有一个缓存它是Hibernate的一级缓存.站在持久化层的角度,Hibernate把实体类分为4种状态:持久化状态.临时状态.游离状态和删除状态.本文将会介绍Hibernate这些机制的细节以及使用方法. 1.Hibernate的Session缓存 (1)Session缓存的作用     使用Session的缓存有三大作用: 减少访问数据库的频率,当Sessi…
Hibernate考试试题 (题库) 1.  在Hibernate中,下列说法正确的有( ABC ).[选三项] A.Hibernate是一个开放源代码的对象关系映射框架 B.Hibernate对JDBC进行了轻量级的对象封装 C.Hibernate可以大大减少操作数据库的工作量 D.Hibernate提供了数据查询机制,但没有提供恢复机制 2.  关于Hibernate,下列说法错误的是(  B  ). A.Hibernate是一个对象-关系映射工具 B.在MVC模式中,Hibernate属于…
Hibernate更新数据(不用update也可以) - 森林木马 - 博客园 https://www.cnblogs.com/owenma/p/3481497.html hibernate级联更新会把外键id设置为null,而是直接删除不关联的数据-CSDN问答https://ask.csdn.net/questions/352370 Hibernate Example for Id column - Stack Overflowhttps://stackoverflow.com/questi…
多对多(many-to-many):在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型:hibernate会为我们创建中间关联表,转换成两个一对多. 1. E-R图 2. 实体类: Teacher实体类如下: package com.reiyen.hibernate.domain; import java.util.Set; public class Teacher { private int id; private String name; privat…