请教一个hibernate的保存一对多实例的问题。

问题描述

假如我在数据库有class和student两个表,他们是一对多的关系,设置了外键,映射等该设置的都OK了。我现在创了两个student实例S1 S2里面都有数据,然后添加到class的实例C1里面,最后,我调用classDAO的保存C1,提交。最后我打开后台数据库查看,class表里面确实保存信息了,但是student表里面还是空的。我想问下是不是保存C1的时候,还要再写一句话保存S1和S2,这样两个表里面才都有数据。如果是这样的话,为什么我看到的很多书上的例子,都是只保存了C1,然后S1和S2貌似也都自动保存了。请教下hibernate会自动保存一对多的这种实例吗?

解决方案

简单的例子就是部门与员工的一对多关系在部门映射文件中设置:<set name="emps" cascade="save-update" inverse="true"><!-- cascade为级联设置,inverse为是否放弃维护关联 --> <key column="dep_id"/> <one-to-many class="cn.itcast.bean.Employee"/> </set>这样设置表示当你保存或更新部门信息时会自动保存或更新相关的员工信息
解决方案二:
首先很肯定的是会,其次要理解是面向对象的操作。如果在保存一得方时,把多的也保存了,首先必须配置关系,在class里配置级联属性,配置cascade值为save-update,然后在实例student时,也需要把class的实例set进student的实例里,然后做save class实例试试
解决方案三:
你在class的映射文件中设置级联保存就可以了,当你保存class时,就会自动保存相关联的Student数据

时间: 2024-11-01 06:29:11

请教一个hibernate的保存一对多实例的问题。的相关文章

小弟请教一个hibernate的问题,网站运行一段时间后就会出现这个错误。

问题描述 type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception java.lang.RuntimeException: tx.rollbacd() throw exception = org.hibernate.TransactionException: JDBC

请教一个Hibernate + oracle 查询问题

问题描述 如果查询的关键字是数据库的通配符 "_"或者"%"应该如何处理?请各位指点一下,十分感谢 解决方案 SQL Server查询过程中,单引号 ' 是特殊字符,所以在查询的时候要转换成双单引号 '' .在like操作还有以下特殊字符:下划线_,百分号%,方括号[],尖号^.其用途如下:下划线:用于代替一个任意字符(相当于正则表达式中的 ? )百分号:用于代替任意数目的任意字符(相当于正则表达式中的 * )方括号:用于转义(事实上只有左方括号用于转义,右方括号使

请教一个问题,hibernate多对一单向映射

问题描述 员工类:Staff.java部门类:Dept.java用的是struts2+hibernate.员工类和部门类是多对一单向映射,部门类有一个属性部门人数num.现在的问题是:当我新增或者删除一个员工时,部门类的num属性如何更新.新手请教,谢谢~ 解决方案 解决方案二:这个问题,与hibernate本身无关的吧,是你自身的业务逻辑而已,员工更新时,你通过java程序,或数据库编程的方式,就可以实现部门人数更新的了.解决方案三:1.用数据库触发器2.自己写程序逻辑解决方案四:在添加员工后

Hibernate基本的CRUD操作实例(更新,保存,删除,查询)

Hibernate基本的CRUD一些方法 CRUD就是CREATE.READ.UPDATE.DELETE的缩写 1.Hibernate中插入记录的方法有: Session.save(); Session.persist(); 2.Hibernate中查询记录的方法有: Session.get() Session.Load(); 3.Hibernate中更新记录的方法有: Session.update(); Session.updateOrSave(); Session.merge(); 4.Hi

后台-请教一个关于网站用户密码保存的问题

问题描述 请教一个关于网站用户密码保存的问题 之前自己做过一个简单的网页有登录注册功能的,但是我是直接将用户注册的名字和密码保存在数据库中,换句话说,我可以在数据库里直接看到用户的密码.当然这只是一个个人简单的小demo,但我想问一下,在实际投入运行的网站中,他们是怎样保存用户的密码的?后台人员能够从数据库中看得到用户的密码吗?如果看不到,那比如我们要修改密码的话,后台又是如何判断我输入的密码是否是原来的密码? 求教一下~谢谢~ 解决方案 一般来说,我们使用哈希(Hash)算法来存储密码. 其中

Hibernate学习之------&amp;gt;Hibernate的保存的区别

hibernate的保存 hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别: 一.预备知识: 在所有之前,说明一下,对于hibernate,它的对象有三种状态,transient.persistent.detached 下边是常见的翻译办法: transient:瞬态或者自由态 persistent:持久化状态 detached:脱管状态或者游离态 脱管状态的实例可以通过调用save().persist()或者saveOrUpdate()方法进行持久化

CGLIB实现的一个hibernate事务管理代理类出现的问题,以及一些疑问

问题描述 先声明下,本人系菜鸟一个,问的问题如果类似于1+1为什么等于2,请少拍板这2天在学习CGLIB,一时兴起用CGLIB实现了一个管理hibernate事务的类.代码如下:package com.test;import java.lang.reflect.Method;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.hibernate.Hibernat

并发-请教一个mysql批量更新时的deadlock问题?

问题描述 请教一个mysql批量更新时的deadlock问题? 数据是mysql 5.6 表引擎是innoDB,DAO是mybatis3 有个表,比如是订单-物品表,里面保存每个订单的所有物品清单 字段有:record_id(记录id,自增长),order_id(订单id),good_id(物品id)等其他字段.. 有个数据同步的业务场景 需要在一个事务里 先根据order_id做删除操作,delete from xxx where order_id=xx 然后再批量增加订单-物品清单inser

布局-请教一个在弹窗中的跳转问题

问题描述 请教一个在弹窗中的跳转问题 弹窗的布局是上下布局的,上面的是一个div,下面是一个div,在下面的div中有滚动条,显示多条数据,现在做了一个按钮浮窗,当点击相应的按钮时,滚动到相应的位置,我是用的a锚点跳转的,但是整个页面都跟着跳转,上面的div就不见了 解决方案 a标签阉割href属性 解决方案二: 有没有代码,贴出一部分看看 解决方案三: 表单1 表单2 表单3 表单4 表单5 表单6 ? ? ? ? ? 前一节点工作质量: 请选择...优秀良好中等一般 办理意见: 附件上传: