hibernate双向多对一映射文件写法:

Hibernate 单向多对一、单向一对多、双向一对多关联关系详解 一对多关系是最普遍的映射关系。比如部门和职工 一对多:从部门的角度,一个部门对应多个职工 多对一:从职工的角度,多个职工对应一个部门 数据库表中结构: 表 department:did departname 表 Employee:eid   ename   esex   did 工具类:SessionFactoryUtils .java,用来创建session工厂,后面的测试类的代码中 阅读详情

人员与部门是多对一的关系:

GdpComponentDept.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="com.danning.struts.pojo">
 <class
  name="GdpComponentDept"
  table="GDP_COMPONENT_DEPT"
 >
  <meta attribute="sync-DAO">false</meta>

  <meta attribute="sync-DAO">false</meta>

  <id
   name="Id"
   type="integer"
   column="FID"
  >
   <generator class="increment"/>
  </id>

  <property
   name="Fdeptname"
   column="FDEPTNAME"
   type="string"
   not-null="false"
   length="50"
  />
  <property
   name="Fmancount"
   column="FMANCOUNT"
   type="integer"
   not-null="true"
   length="10"
  />
<!-- 参见hibernate_reference.pdf的第22章的示例:父子关系-->
  <set name="gdpComponentUsers" inverse="true" cascade="all-delete-orphan">
   <key column="FID" />
   <one-to-many class="GdpComponentUser" />
  </set>

 

 </class> 
</hibernate-mapping>

 

GdpComponentUser.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.danning.struts.pojo">
 <class
  name="GdpComponentUser"
  table="GDP_COMPONENT_USER"
 >
  <meta attribute="sync-DAO">false</meta>

  <meta attribute="sync-DAO">false</meta>

  <id
   name="Id"
   type="integer"
   column="FID"
  >
   <generator class="increment"/>
  </id>
  <property
   name="Fusername"
   column="FUSERNAME"
   type="string"
   not-null="false"
   length="30"
  />
  <!--Fdeptid不能这样写,因为下面的集合many-to-one已经表示了,要通过集合得到部门的Fdeptid-->
  <!--property
   name="Fdeptid"
   column="FDEPTID"
   type="integer"
   not-null="false"
   length="10"
  /-->
  <property
   name="Faddress"
   column="FADDRESS"
   type="string"
   not-null="false"
   length="50"
  />
  <property
   name="Fsex"
   column="FSEX"
   type="java.lang.Short"
   not-null="false"
   length="5"
  />
  <property
   name="Fage"
   column="FAGE"
   type="java.lang.Short"
   not-null="false"
   length="5"
  />
  <property
   name="Fhigh"
   column="FHIGH"
   type="java.lang.Short"
   not-null="false"
   length="5"
  />
  <property
   name="Fweigh"
   column="FWEIGH"
   type="java.lang.Short"
   not-null="false"
   length="5"
  />
  <property
   name="Femail"
   column="FEMAIL"
   type="string"
   not-null="false"
   length="50"
  />
  <property
   name="Fphone"
   column="FPHONE"
   type="string"
   not-null="false"
   length="50"
  />
  <!-- 参见hibernate_reference.pdf的第22章的示例:父子关系-->
  <!--注意:在GdpComponentUser也要写一个gdpComponentDept属性。-->
  <many-to-one
   name="gdpComponentDept"
   column="FDEPTID"
   class="GdpComponentDept"
   not-null="true"
   lazy="false"
  >
  </many-to-one>

POJO:    GdpComponentDept.java

public class GdpComponentDept implements Serializable{
 
 private Integer id;
 private String fdeptname;
 private int fmancount;
 //用集合表示一个部门里的所有人员。
 private Set gdpComponentUsers = new HashSet();

 public GdpComponentDept() {
  
  // TODO Auto-generated constructor stub
 }
 
 //参照hibernate_reference.pdf的191页
 //为了让事情变得井井有条,可以为Parent加一个addUser()方法!
 public void addUser(GdpComponentUser user){
  user.setGdpComponentDept(this);
  gdpComponentUsers.add(user);
 }

 public String getFdeptname() {
  return fdeptname;
 }

 public void setFdeptname(String fdeptname) {
  this.fdeptname = fdeptname;
 }

 public int getFmancount() {
  return fmancount;
 }

 public void setFmancount(int fmancount) {
  this.fmancount = fmancount;
 }

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public Set getGdpComponentUsers() {
  return gdpComponentUsers;
 }

 public void setGdpComponentUsers(Set gdpComponentUsers) {
  this.gdpComponentUsers = gdpComponentUsers;
 }
 

}

 

POJO:GdpComponentUser.java

public class GdpComponentUser implements Serializable{
 
 private Integer id;
 private String fusername;
 
 //fdeptid,在影射文件中不用再写一个对应的property,<many-to-one>已经表示了!
 //参见hibernate_reference.pdf 的192页
 private Integer fdeptid;
 private String faddress;
 private short fsex;
 private short fage;
 private short fhigh;
 private short fweigh;
 private String femail;
 private String fphone;
 private GdpComponentDept gdpComponentDept;
 
 public GdpComponentUser () {

 }

 public String getFaddress() {
  return faddress;
 }

 public void setFaddress(String faddress) {
  this.faddress = faddress;
 }

 public short getFage() {
  return fage;
 }

 public void setFage(short fage) {
  this.fage = fage;
 }

 public String getFemail() {
  return femail;
 }

 public void setFemail(String femail) {
  this.femail = femail;
 }

 public short getFhigh() {
  return fhigh;
 }

 public void setFhigh(short fhigh) {
  this.fhigh = fhigh;
 }

 public String getFphone() {
  return fphone;
 }

 public void setFphone(String fphone) {
  this.fphone = fphone;
 }

 public short getFsex() {
  return fsex;
 }

 public void setFsex(short fsex) {
  this.fsex = fsex;
 }

 public String getFusername() {
  return fusername;
 }

 public void setFusername(String fusername) {
  this.fusername = fusername;
 }

 public short getFweigh() {
  return fweigh;
 }

 public void setFweigh(short fweigh) {
  this.fweigh = fweigh;
 }

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public Integer getFdeptid() {
  return fdeptid;
 }

 public void setFdeptid(Integer fdeptid) {
  this.fdeptid = fdeptid;
 }

 public GdpComponentDept getGdpComponentDept() {
  return gdpComponentDept;
 }

 public void setGdpComponentDept(GdpComponentDept gdpComponentDept) {
  this.gdpComponentDept = gdpComponentDept;
 }
 
}

一个常量通用类:

package com.danning.struts.utils;

public class Constants {

 
 //设置每页显示的人员数量
 public static int ROWSPERPAGE=2;


}

 </class> 
</hibernate-mapping>

SSH框架之Hibernate的关联映射之一对多、多对一映射 关联映射之一对多、多对一映射 一、需求: 部门与员工 一个部门有多个员工 【一对多】 多个员工,属于一个部门 【多对一】 二、逻辑分析: 三、代码实现 1、javabean及映射文件的配置: 1)Employee.java、Employee.hbm.xml 2)Dept.java、Dept.hbm.xml 阅读详情

相关推荐

《Hibernate学习笔记九》:多对一和一对多的关联关系

《Hibernate学习笔记九》:多对一和一对多的单向关联关系前面介绍了一对一的关联关系在Hibernate应该如何来实现,这篇博文就来介绍下多对一和一对多的关联关系。多对一和一对多的关联关系在我们的生活中也比较常见,例如,在我们学生时代,一个班级可以有多个学生,而一个学生只能属于一个班级,这就是一个多对一(一对多)的例子;还有在我们的工作中,一个工作小组可以有多个用户,而一个用户只能属于一个小组,

wojiushimogui的博客 1858

HibernateSynchronizer中无法自动生成DAO的问题

HibernateSynchronizer是当前优秀的eclipse关于hibernate的插件。用它生成hbm文件后,通过此插件的Synchronize Files功能可以自动生成对应的pojo类,然而对应的DAO却没有自动生成。其实这个插件是具有自动生成DAO的功能的。打开生成的hbm文件,在文件接近开头的部分可以看到一下一行代码:   &lt;meta attribute="sync-D...

NNever的专栏 284

保姆级教程:用高云GW2A开发板搭建RISC-V软核处理器(含DDR3内存优化配置)

本文提供了一份详细的保姆级教程,指导开发者使用高云GW2A-LV18PG256C8 FPGA开发板搭建RISC-V软核处理器系统。教程涵盖了从开发环境搭建、PicoRV32软核集成,到关键的DDR3内存控制器配置与优化,并深入讲解了时序约束与系统调试方法,帮助初学者和爱好者实现从逻辑设计到软硬件协同的深度实践。

2a4s6d8f0g的博客 566

危险的Hibernate映射共用class及其解决

使用hibernate对于有交集字段结构或结构一样的表,有时候会很“正常”的想到一种“偷懒”的办法,就是让一个hbm映射定义映射到多个TABLE。例如表维表(或代码表)有结构:   false             那么可能对该结构进行扩充出几个同样的hbm定义:   name="my.model.LabelValueCode"  extends="LabelValueCodeBase"

applebomb的专栏 927

[渗透测试实战篇-4] RCE漏洞组合拳突破Getshell全解析

本文深入解析RCE漏洞组合拳在渗透测试中的实战应用,通过SSRF、XXE等漏洞串联技术突破Getshell的全过程。文章详细介绍了Java和PHP环境下的漏洞利用差异,以及防御绕过与权限维持的实用技巧,为安全研究人员提供全面的实战指导。

weixin_29211309的博客 350

Python调用CANoe(1)(启动与停止,变量和信号读写)

CANoe因为其封闭性(Vector独有),开发的时候,有很多局限性;Python 因为其开源,容易上手,功能强大,那么Python 和 CANoe结合会产生怎样的火花呢?

蚂蚁小兵 4万+

hibernate synchronizer 使用问题

1.HibernateSynchronizer中无法自动生成DAO的问题       HibernateSynchronizer是当前优秀的eclipse关于hibernate的插件。用它生成hbm文件后,通过此插件的Synchronize Files功能可以自动生成对应的pojo类,然而对应的DAO却没有自动生成。其实这个插件是具有自动生成DAO的功能的。打开生成的hbm文件,在文件接近开...

cmjcmj8080的博客 214

39、低功耗处理器性能评估与Cortex - M23/M33低功耗特性解析

本文深入解析了Cortex-M23和Cortex-M33处理器的低功耗特性及其性能评估方法。介绍了ULPMark、CoreMark、IoTMark-BLE和SecureMark-TLS等基准测试在能效评估中的应用,并详细阐述了处理器的睡眠模式、系统控制寄存器(SCR)配置、WFI/WFE指令、退出时睡眠、挂起时发送事件(SEVONPEND)以及唤醒中断控制器(WIC)等关键低功耗机制。结合状态保留技术,展示了如何通过芯片级设计大幅降低泄漏电流,实现高效能低功耗的物联网与嵌入式系统设计。

Pepper的专栏 129

j2ee(SSH)项目开发中的代码小结(二)

废话少说,接上回。一) 如果在项目中考虑到适应多个数据库,比如sql server2005,oracle,那么请在sql server2005设计你的数据表时,将表名,字段名全部大写,那么在转换成oracle时会非常方便,否则在oracle中写sql语句是非常痛苦的。下面是一个user表对应的hibernate配置文件片断:   -->  false              length

QK的专栏 1104

基于知识图谱的智能工作流引擎

随着大数据和人工智能技术的快速发展,企业和组织对数据的依赖程度日益增加。为了更好地管理和利用这些数据,知识图谱逐渐成为一种重要的工具。知识图谱不仅能够以结构化的方式表示复杂的知识,而且能够通过推理和查询提供深层次的信息。然而,如何将知识图谱应用于实际业务场景中,尤其是如何构建智能工作流引擎,仍然是一个具有挑战性的问题。智能工作流引擎是一种能够自动化执行复杂业务流程的系统,它可以通过对业务规则和数据的分析,自动生成和优化工作流,从而提高工作效率和准确性。

AI天才研究院 1870

手把手教你学Simulink实例--基于Simulink的电力电子系统电池管理系统(BMS)设计与仿真实例

本文详细介绍了基于Simulink的电池管理系统(BMS)设计与仿真全过程。首先阐述了BMS在安全防护、寿命延长和性能优化方面的必要性,分析了新能源汽车、光伏储能等典型应用场景的技术指标要求。接着详细讲解了Thevenin等效电路和多电平电池模型构建方法,并给出SOC估算、故障诊断等核心算法的MATLAB实现代码。通过设计正常充放电、过充保护等多场景仿真测试,验证了系统在SOC跟踪精度(误差<1.5%)和故障响应速度(<10ms)方面的优异性能。文章还提出了参数优化方法和未来AI融合、数字孪生等发展方向,提

xiaoheshang_123的博客 377

6.Hibernate关联映射(多对一、双向一对多、双向多对多)

类与类之间最普遍的关系就是关联关系,而且关联是有方向的。 以部门表(Depe)与员工表(Emp)为例: ①一个部门下有多个员工,而一个员工只能属于一个部门。 ②从Emp到Dept的关联是多对一关联,这就意味着每个Emp对象只会引用一个Dept对象 ③从而Dept到Emp是一对多的关联,这就意味着每个Dept对象会引用一组Emp对象 因此,在Emp类中应该定义一个Dept类型的属性,来引用所关联的Dept对象;而在Dept类中一个定义个一个集合类型的属性,来引用所有关联的Emp对象。

相互学习 共同进步 696

【100%通过率】华为OD机试真题 Python 实现【最多组合直角三角形个数】【2023 Q1 | 100分】

有N条线段,长度分别为a[1]-a[n]。 现要求你计算这N条线段最多可以组合成几个直角三角形。 每条线段只能使用一次,每个三角形包含三条线段。

MISAYAONE的博客 1万+

基于XML映射文件的Hibernate关联映射(单向多对一,单向一对多,双向多对一,双向多对多,基于外键的双向一对一,基于主键的双向一对一)

单向多对一 首先先了解下数据库中存在的表,以及他们的关系,这里以type表和product_info表为例 type表 product_info表 其中tid是外键,与type表的id字段对应,存在外键约束。 数据库中的表之间多对一是指可以从多的一端找到一的那一端,例如部门和员工的关系是多对一关系,一个部门可以有很多个员工,多个员工从属于一个部门,从...

weixin_41233219的博客 252

1、基于改进3D卷积神经网络的阿尔茨海默病分类

本文提出了一种基于改进3D卷积神经网络的阿尔茨海默病(AD)分类方法,利用3D CNN对预处理后的T1加权MRI数据进行空间特征提取,并在VGG网络结构中引入类似ResNet的跳跃连接以缓解模型退化和过拟合问题。实验基于ADNI数据集,包含AD、MCI和NC三类样本,结果表明改进后的3D VGG模型在AD/NC、MCI/NC及多分类任务中均取得了优异性能,尤其在AD/MCI/NC分类中准确率达到98.50%,优于现有典型3D深度学习方法。研究验证了3D CNN在脑部疾病诊断中的有效性,并为AD的早期识别提供

kk1234的博客 89

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java之hibernate之双向的多对一关联映射

这篇讲解 双向的多对一关联映射 1.表结构和多对一时,一致 2.类结构 Book.java public class Book implements Serializable{ private int id; private String name; private String author; private double pri...

weixin_30768661的博客 83

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Hibernate关联映射之一对多,多对一以及双向一对多

在上篇博客我们讲了hibernate对单表的操作,本篇博客就来讲讲对多表的关联映射操作。首先我们拿来做例子的表为班级表1---n学生表,在这次的测试主键我用的是序列,创建代码如下: --班级表 drop table classes; create table classes( cid int primary key, cname varchar2(50) ); dr

韶shls的博客 5978

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Hibernate】--关联关系映射:一对多和多对一

之前已经对一对一的关联映射作了介绍,在日常开发中,我们还经常遇到一对多和多对一的情况。其实一对多和多对一这两种情况可以看做是一种映射,只是看待的角度不同。         一对多/多对一分为两种关联关系:单向关联和双向关联        单向关联:在一/多的一端进行配置        双向关联:两端都进行配置。   下面用实例来介绍这两种关系:班级(Class)与学生(Stude

Victor 1266

关于hibernate的多对一单向关联,一对多单向关联,和一对多双向关联的疑惑解答

hibernate提供的多对一,一对多给面向对象的开发提供了更多的操作便捷,但是也引发了不少问题。 也许很多人还不知道单向关联和双向关联有什么区别?那就先来说说这两者间的异同。 单向关联:是指在实体的一端进行关系的维护,直接通过一端的操作实现业务逻辑,单向关联有一对多的单向关联和多对一的单向关联,一般都是用多对一的单向关联,是因为在多的一方维护关系比较合理些。【一对多的单向关联是在一那

li758568825的专栏 733

Hibernate 菜鸟教程 5 双向多对一

主要讲解inverse和cascade的用法 cascade定义的是关系两端对象到对象的级联关系; 而inverse定义的是关系和对象的级联关系(管理外键的值)。inverse 属性默认是false的,就是说关系的两端都来维护关系。 在双向多对一里面配置到一方的集合属性上面,inverse=true,表示关系的维护(外键的值)由对方(多方)来管理cascade all : 所有情况下均进行

菜鸟教程 1346

Hibernate一对多/多对一关系映射详解及相应的增删查改操作

以客户与订单的关系为例 1.在实体模型类中绑定两者关系: 客户类: public class Customer { private Integer id;//客户id private String name;//客户名称 //一对多属性描述,一个客户有n个订单 private Set<Order> orders = new HashSet<Ord...

MoLi blog 1万+

hibernate 双向一对多(多对一)

配置hibernate环境 实体类 package com.wd.pojo; public class Student { private Integer id; private String name; private Teacher teacher;//此处通过t_student中的tid列映射到t_teacher表中的一行记录 public Teacher getTeac...

weixin_43317111的博客 244

hibernate 多对一的双向理解

在电子商务应用中,经常会有这样的需求:根据给定的客户,得到该客户的所有订单;根据给定的订单,得到该订单的所属客户。对于这种双向关联的情况,在Hibernate应用中,也有人叫多对一双向关联,只是叫法不同而已,都是通过映射一对多双向关联关系来实现的。 不管是多对一单向关联还是(一对多)多对一双向关联,在关系型数据库中的表现方式都是一样的,均通过外键参照来实现如图4-18所示。

Tomake的博客 492

Hibernate 多对一关系

多对一(单向 和 双向) 案例:一个部门 有多个员工, 一个员工只属于一个部门 一、多对一单向 1)实体类 部门实体类(Department.java) package com.lcy.model; public class Department { private int id; private String name; public Department() { ...

踏 浪的博客 329

hibernate树形结构多对一双向关联

1.树形单向多对一关联:(对应上图1)   代码: Session session = HibernateUtils.getSession(); try{ session.beginTransaction(); Organization org1 = new Organization(); org1.setName("org1"); sessio

不断出发,永无抵达! 2073
上一篇: 开发人员维护模块总结
下一篇: javascript中的cookie使用(javascript权威指南)
danning
博客等级 码龄22年 5粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值