Hibernate 一对多 多对一 非主键 问题

hibernate一对多、多对一、多对多问题 最近在写一个博客项目,数据库表的建立要考虑多表的问题,记录下学习所得! CRUD create read update delete 实体类的设计: Article: articleId title content  createDate author(User类型 多对一关系维护端) category(Category类型 多对一关系维护端)                comment... 阅读详情

Hibernate 一对多 多对一 非主键 问题

 

一直以来,用hibernate做多对一时,关联的都是主键,今天,同事设计的表,关联的却不是主键,这下麻烦了,hibernate的many-to-one默认关联的都是主键,原来,hibernate提供了非主键的关联,即只要加一个property-ref即可,注意红色的部分,如: 

比如假如:TbLoungeLts 表中有一个字段Lounge_Code对应了表TbLounge中的 非主键lounge_code.

主表:TbLounge写法:主键为:id ,

xml:

<id name="loungeId" type="java.lang.String">

<column name="LOUNGE_ID" length="32" />

<generator class="uuid.hex" />

</id>

<property name="loungeCode" type="java.lang.String">

<column name="LOUNGE_CODE" length="32" not-null="true">

<comment>休息室IP,有效唯一</comment>

</column>

</property>

 

<set name="tbLoungeLtss" inverse="true" cascade="none" >

<key column="loungeCode" property-ref="loungeCode" />

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

</set>

bean文件:

 private String loungeCode; // 休息室IP,有效唯一

 private Set<TbLoungeLts> tbLoungeLtss = new HashSet<TbLoungeLts>(0);    // 关联休息室统计信息

 public String getLoungeCode() {

return this.loungeCode;

}

 

public void setLoungeCode(String loungeCode) {

this.loungeCode = loungeCode;

}

public Set<TbLoungeLts> getTbLoungeLtss() {

return tbLoungeLtss;

}

 

public void setTbLoungeLtss(Set<TbLoungeLts> tbLoungeLtss) {

this.tbLoungeLtss = tbLoungeLtss;

}

 

从表:TbLoungeLts表

xml

<property name="loungeCode" type="java.lang.String">

<column name="LOUNGE_CODE" length="32" />

</property>

  <many-to-one name="tbLounge" property-ref="loungeCode" class="TbLounge" cascade="all"

            insert="false" update="false" lazy="false">

            <column name="LOUNGE_CODE" length="32"

                not-null="true">

                <comment>休息室类型</comment>

            </column>

        </many-to-one>

bean文件:

//休息室代码

private String loungeCode;

   private TbLounge tbLounge;//关联休息室

public TbLounge getTbLounge() {

return tbLounge;

}

public void setTbLounge(TbLounge tbLounge) {

this.tbLounge = tbLounge;

}

public String getLoungeCode() {

return loungeCode;

}

 

 

public void setLoungeCode(String loungeCode) {

this.loungeCode = loungeCode;

}


 还有个问题,因为我们用从表关联了主表的非主键的字段Lounge_Code ,那么应该保证主表的Lounge_Code唯一的约束,在数据库的TbLounge表中应当配置:lounge_Code 的唯一约束,不允许有重复记录。

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

相关推荐

SSH框架之Hibernate的关联映射之一对多、多对一映射

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

一点一滴 1万+

2010/11/20 hibernate

 作业:权限管理 一. hibernate1. 非主键,无法删除(待查)Code: //roleCode 非主键   RoleModul rm = new RoleModul();   rm.setRoleCode(roleCode);   session.delete(rm);  2. hql语句Code

jay304216304的专栏 272

Hibernate一对多与多对一映射操作详解

对象关系映射(Object-Relational Mapping, ORM)是一种技术方法,使得程序人员能够将对象模型直接映射到关系数据库中。Hibernate是Java中广泛应用的ORM框架之一,它提供了透明化的持久层解决方案,使得开发者能够以面向对象的方式操作数据库,而无需直接处理SQL语句。在Hibernate中配置和操作实体类的集合属性涉及对特定注解的合理使用,并且要理解集合属性与数据库表之间的映射关系。

weixin_36001279的博客 950

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

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

韶shls的博客 5978

Hibernate双向关联:一对多与多对一配置详解

一对多和多对一关系是关系型数据库中最常见的关系类型之一,它们在对象关系映射(ORM)框架如Hibernate中尤为重要。在一对多关系中,一个父实体可以关联多个子实体,但每个子实体只能关联到一个父实体。多对一关系是其对称,即多个子实体可以关联到同一个父实体,但父实体可以关联到任何数量的子实体。在Hibernate中,这些关系可以通过注解或XML配置实现,它们将关系映射到数据库中的表。例如,在一对多关系中,我们可能在父表中有一个外键指向子表,而多对一关系则相反,子表中会有一个外键指向父表。

weixin_28713083的博客 877

基于Codex平台与AI Agent技能开发,实现抖音爆款视频分析与脚本自动生成

大家好,我是专注于AI应用开发的技术博主。最近在探索如何利用AI工具自动化内容创作时,我发现了一个非常有趣的组合:通过Codex平台创建自定义的Skill(技能),来批量分析抖音平台的爆款视频,并基于分析结果自动生成新的带货视频脚本。这听起来像是内容团队的“黑科技”,但实现起来其实有清晰的路径可循。本文将为你完整拆解这个实战项目,从环境搭建、Skill编写、数据抓取到视频脚本生成,手把手教你打造自己的“AI内容助理”。无论你是想了解AI Agent的开发,还是对短视频自动化创作感兴趣,都能从本文中获得可直接

weixin_34110749的博客 644

hibernate中多对一、一对一、一对多、多对多的配置方法

hihernate一对多关联映射(单向Classes----->Student) 一对多关联映射利用了多对一关联映射原理 多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一 一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多 也就是说一对多和多对一的映射策略是一样的,只是站的角度不同 在一一端维护关系的缺点:  * 如果将t_studen

计算机技术学习与应用 9183

文献阅读:SAR像素偏移的性能改进An Improvement of the Performance of SAR Offset Tracking Approach

像素偏移追踪POT文献阅读

weixin_56301271的博客 342

hibernate 单向多对一,一对多,双向多对一详解

1、单向多对一和双向多对一的区别? 只需要从一方获取另一方的数据时 就使用单向关联双方都需要获取对方数据时 就使用双向关系部门--人员使用人员时如果只需要获取对应部门信息(user.getdeptarment())不需要 从部门下的人员信息时,就配置成单向 多对一使用部门时如果只需要获取部门下人员信息(deptartmanet.getusers())不需要 从人员获取部门信息时,就配置成单向 一...

wanderlustLee的博客 1695

AM驱动架构—优质Mini-LED显示技术解决方案

(VR)和增强现实(AR)设备:MiniLED背光驱动方案适用于虚拟现实和增强现实设备中的显示技术,通过高亮度和高对比度的显示效果,创造更逼真的虚拟体验此外,MiniLED背光还能够实现更快的响应速度,减少图像残影,使得用户的动作在虚拟环境中更加流畅自然。以其出色的性能和广泛的应用前景备受关注是实现MiniLED显示效果的重要环节。1)更高的亮度和对比度:尺寸更小,可以在同样面积的显示屏上配置更多的LED,并且通过独立控制每一个MiniLED,可以实现更高的亮度和更细致的对比度,使得显示画面更加鲜明清晰。

isweekDN的博客 2763

数字IC时序约束实战:深入解析clock_uncertainty的设置策略与后端影响

本文深入探讨数字IC设计中clock_uncertainty的设置策略及其对后端实现的影响。通过分析时钟不确定度的组成(包括clock_skew、clock_jitter和margin),并结合实际项目经验,详细介绍了在不同设计阶段(综合、布局布线、签核)的动态调整方法。文章还提供了工程化处理参数来源、跨时钟域特殊处理以及优化时序收敛的实用技巧,帮助工程师提升数字IC设计的可靠性和性能。

weixin_29284657的博客 228

Hibernate-一对多和多对一

一对多和多对一的实例有很多,下面我们以员工和部门为例子: 首先创建主配置文件,设置jdbc的配置和连接池 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hi

Evan_QB的博客 1058

具身智能:原理、算法与系统 第18章 模仿学习与人类示范

与基于试错机制的强化学习不同,模仿学习假设存在能够提供高质量轨迹示范的专家策略,学习者的目标是在不直接访问专家内部决策机制的情况下,复现或泛化专家的行为模式。此外,选项 GAIL(Option-GAIL)将分层强化学习与对抗模仿结合,学习选项(Options)级别的策略,能够捕捉专家示范中的多模态行为与高层意图。X-Sim 框架提出从真实到模拟再到真实的迁移路径:首先从人类视频中重建物理仿真环境,在仿真中训练状态级策略,随后通过策略蒸馏获得基于视觉的策略,最后通过在线领域自适应对齐真实与仿真观测。

VectorShift的博客 125

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

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

MoLi blog 1万+

开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一)

阿里云推出国内首个集成“快思考”与“慢思考”能力的 Qwen3-8B 大语言模型,以80亿参数和 128K 上下文支持,重塑AI应用边界并助力开发者高效部署

以微薄之力,予他人些许温暖. 2万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Hibernate注解配置一对多双向关联和多对一单向关联

Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射。在Hibernate3.3之前,需单独下载注解开发包   配置持久化类 配置关联关系  下面我们先从多对一单向关联关系讲起,多对一单向关联就是在多的一方植入一的一方的主键作为外键,下面我们先进行初始配置,   在配置的过程中我们会遇到一个问题  就是无论用load还是get都不会出现延迟...

龚道松 2167

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

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

hibernate多对一关联和一对多关联

1. 多对一的单向关联 从订单(order)到客户(customer)的单向关联 (多个订单对应一个客户) JavaBean: Customer public class Customer{ private Integer id; private String name; } JavaBean: Order public class Customer{ private Integ

技术人生 2808

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

hibernate的多对一,一对多单向关联,双向关联区别与联系

首先来看一下多对一。举个例子来说用户和组。一个组中有多个用户,一个用户只能属于一组。用户和组之间就是一个多对一的关系的。如下图        这个关系我们要怎样维护呢?我们想象一下,假如在一的一端维护关系,即在group一端加一个字段userId来标识学生。那设计出来的表格存储数据是这个样子的。                             不解释,直接看在

yuntaishan0102的专栏 4478

Hibernate一对多、多对一映射

Hibernate一对多、多对一映射       在自然界中事事物物纷纷扰扰,关系错综复杂,迷迷离离,我们不是在逃避关系而是我们忽略了这种错错综综的关系。那么作为一个程序员,在我们的世界中一切皆有联系,皆可以用程序去构建这个世界。这样或那样的联系有时候就产生了各种对应关系。       在我们的生活中存在着这样或者那样对应关系其中今天要讨论的是一对多、多对一关系,比如一颗大树有很多的叶子,每

zhangdongxuan的博客 481

【学习笔记】实例解说Hibernate 一对多、多对一关联关系

这里以员工和部门作为例子给大家解说:假设,一个员工只有一个部门,但是一个部门就可以有多个员工。那么员工和部门就是多对一关系,部门和员工就是一对多关系。

机智猫 1万+

Hibernate一对多,多对一

Hibernate一对多,多对一 今天写一下Hibernate多对一,一对多! 思路具体如下: 1,建实体类 2.一对多实体类用set集合 多对一实体类用对象 3.配置映射文件,指明关系 4.把多存到一里面,再把多存到数据库 我就直接贴代码了,

ysygn的博客 269

hibernate 一对多/多对一 级联新增,查询

1. 什么是关联(association) 关联指的是类之间的引用关系。如果类A与类B关联,那么被引用的类B将被定义为类A的属性。例如: public class A{ private B b = new B; public A(){} } 2.关联的分类:关联可以分为一对一、一对多/多对一、多对多关联 关联是有方向的 #关键点都在数据库中的外键上面 3案例 .如何建立订单项和订单一对多双向关...

Soul717的博客 851

Hibernate的一对多,多对一以及多对多

一对多和多对一 创建两个类Group和User(一个小组有多个用户形成多对一和一对多的关系) 1.多对一 创建Group字段 private Group group; 在getGroup()方面添加@manyToOne注解 @ManyToOne public Group getGroup() { return group; } 2.一对多 创建Group类时创建一个Set集合来保存多的...

OVO_LQ_Start的博客 433

Hibernate 单向多对一&单向一对多&单向多对多

上篇是单向一对一,这篇是单向的其他方式; 顺便说一下 ”单向A对B“,指的就是A的那一方能够加载到B; 1.多对一就是多的那一方(A)能够加载另一方: 只需要在上篇文章中的单向外键一对一加载中去掉 uniqe属性即可: 这个时候teacherId这列的值是可以重复的 2.一对多 例如B(Teacher)拥有很多A(学生): A正常,只在B中增加A属性

Jintao_Ma的博客 1176
上一篇: BigDecimal用法和注意点
下一篇: Spring管理的Struts2的Action的全程安全问题
lb8607
博客等级 码龄18年 17粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值