【Hibernate】Hibernate的集合映射与sort、order-by属性

lighttools用透镜旋转手动创建菲尼尔透镜 学过很多软件,都没有留下痕迹,很多年之后只记得学过的软件常用的一些功能,稍微难一些的再次用起需要重新学,但如果留下点痕迹,重新再用就会很快。lighttools无意之中接触了,记一点点笔记吧。... 阅读详情

常用集合Set、List、Map,相信大家都很熟悉,面试中也会经常问。Set和List都继承了Collection接口,Set是无序不可重复的,不可以存储相同的元素;而Lsit是顺序存储的,可存储重复元素。Map不是继承Collection的,Map提供key到value的映射,Map也是不可重复的(key不可重复),一个Map中不能包含相同的key,每个key只能映射一个value。

持久化类的属性是集合时,要把它们存到数据库中,需要增设数据库表来完成映射工作。例如一个学生的教育背景可能不止一个,这个时候持久化类的属性是集合,这个时候数据库就需要再提供一张数据库表来存储。


由上图可以看出,集合的映射应该怎么写了。集合的映射大致一样,我们用Set的映射来详细说明。

<set name="education" table="student_education" order-by=" education DESC">
			<key column="student_id"></key>
			<element type="string" column="education"></element>
</set>

name属性是指对象的集合属性名,table属性是指集合表(数据库表)的名称,key子元素是指集合外键的列名,element子元素用来存放集合元素的列的信息,order-by属性是指查询数据库时指定order by 子句,这是在数据库中的排序。对于Set的排序,还有另外一个属性sort,它是在内存中排序的,默认是unsorted,sort还有其它两个值:natural和comparatorClass,当使用sort属性时,要求使用的是可以排序的Set,例如TreeSet等。

List的映射:

<list name="education" table="student_education">
			<key column="student_id"></key>
			<list-index column="list_id"></list-index>
			<element type="string" column="education"></element>
</list>

List的映射与Set很相似,多了一个list-index子元素,是指定List的索引对应于集合表中的哪个字段。因为List是有序的,可以通过索引来取值。也正因为有序,所以不可以使用sort属性进行排序。

Map的映射:

<p><map name="education" table="student_education"></p><p>                     <keycolumn="student_id"></key></p><p>                     <map-keytype="string" column="map_key"></map-key></p><p>                     <element type="string"column="education"></element></p><p></map></p>

map-key子元素是指定Map的key值对应集合表中的哪个字段。

除了这3个常用的集合的映射,hibernate还提供了另外两种集合的映射:数组和Bag。数组性质跟List相似,但是数组的长度不可变;Bag也与List相似,但是它是无序可重复的。因此数组的映射与List基本一样:

<array name="education" table="student_education">
			<key column="student_id"></key>
			<list-index column="list_id"></list-index>
			<element type="string" column="education"></element>
</array>

而Bag的映射就比List少一个list-index子元素:

<bag name="education" table="student_education">
                     <keycolumn="student_id"></key>
                     <elementtype="string" column="education"></element>
</bag>
注意:

使用集合属性时,一定要使用接口,而不能声明为具体实现类。因为经过session操作后,集合就变成hibernate自己的集合实现类。

最后再整理一下关于sort也order-by属性的使用:

由于Set与Map都是无序的,所以我们可以使用sort或者order-by属性对它们进行排序。sort是在内存中排序的,要求使用的Set与Map也是可排序的。这种排序方法不建议使用,使用较多的,排序也比较快的是使用order-by属性,直接在数据库中排序。


Author:立礼
Sign:人生不要有太多的幻想,而要有更多的行动。

Matlab实战:用Transformer+LSTM+SVM搞定股票价格预测(附完整代码) 本文介绍了一种基于Transformer、LSTM和SVM的混合建模方法,用于股票价格预测。该方法结合了Transformer的全局依赖捕捉能力、LSTM的时序特征提取优势以及SVM的非线性回归能力,有效应对金融时间序列的非平稳性和噪声问题。文章提供了完整的Matlab实现代码,并展示了混合模型在实盘测试中的优异表现,方向预测准确率达62%,最大回撤控制在3.2%以内。 阅读详情

相关推荐

西门子V90 PN伺服控制核心:FB284功能块详解与实战

在工业自动化中,伺服定位控制是运动控制的基础环节,其本质是PLC通过PROFINET协议与伺服驱动器实现高速、确定性数据交互。FB284作为西门子为V90 PN定制的标准化功能块,封装了GSD映射、状态机管理与周期性PDO同步机制,将底层寄存器操作抽象为高可靠调用接口。相比MOVE指令或MC_MoveAbsolute等通用方案,FB284显著降低时序错乱风险,提升多轴同步精度与故障响应能力。它广泛应用于包装、灌装、装配等中端产线,尤其适配S7-1200/1500平台下的快速部署与现场维护。本文聚焦V90 P

weixin_42696271的博客 300

Hiberante 中 sort 的实现方式

http://hi.baidu.com/accpandsvse/blog/item/a12c22f23d0d1bc20a46e091.html http://hi.baidu.com/accpandsvse/blog/item/a12c22f23d0d1bc20a46e091.html 從資料庫的觀點來看,Set、Map、Bag是無序的,而List是有序的,這邊所謂的無序或有序,是指將容器...

DGenerationX的专栏 259

LabVIEW 调用MATLAB 进行图像处理的实现

程机械及设备的变形、振动、冲击、粗糙度、刚度和强度等特性,还可用在土木结构、水利设施的变形测量[4][5]。因此,该技术在机械、土木、水利、电器、航空航天、兵器工业及生物医学等领域的检测中具有非常重要的地位。将物面前方空间的散斑用摄像设备记录下来,当物体运动或由于受力而变形时,这些随机分布的散斑图也随之在空间按一定的规律运动,因此能用记录的散斑图在计算机上分析物体的运动和变形,这就是电子散斑技术。当物体的漫反射表面被激光照射时,漫反射的光波在物体表面的前方相互干涉,由于漫反射光的。

qq_37971227的博客 3874

Hibernate(2)【sort和order by】排序的区别

在Hiebernate集合映射关系中,排序问题<set name="addresses" table="addresses" *sort="natural"*> <key column="uid" /> <element column="address" type="string" /> </set>sort=”natural”保证了出库排序,而

Renshaoxiong的博客 1318

Android设置鼠标显示的屏幕

【代码】Android设置鼠标显示的屏幕。

薛文旺 673

Qt for Android:基于libusb实现CH340x串口通信的高效开发方案

本文详细介绍了在Qt for Android环境下,基于libusb实现CH340x串口通信的高效开发方案。通过绕过Android高版本系统的权限限制,利用libusb+JNI技术实现稳定通信,适用于工业手持终端等场景。文章涵盖环境搭建、核心实现、常见问题解决方案及性能调优经验,帮助开发者快速掌握这一关键技术。

weixin_42715608的博客 428

Hibernate实战——Set集合属性

一配置文件 <?xml version="1.0" encoding="GBK"?> <!-- 指定Hibernate配置文件的DTD信息 --> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http:...

实践求真知 569

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

综上,大多数工作均基于CLIP预训练的图像编码器和文本编码器。GlIP为解决目标检测任务提供了先例,后续很多工作常与目前较为广泛使用的目标检测网络结构相结合,从而构建新的开放词汇目标检测器。如ViLD基于Mask R-CNN、RegionCLIP基于R-CNN、VLDet和BARON基于Faster R-CNN。更具有创新性的工作是Detic,提出了使用图像分类的数据集来对目标检测器的分类头进行训练。

yangsn0719的博客 4402

Hibernate中的HQL语言

一、HQL语言简介 HQL全称是Hibernate Query Language,它提供了是十分强大的功能,它是针对持久化对象,直接取得对象,而不进行update,delete和insert等操作。而且HQL是面向对象的,具备继承,多态和关联等特性。 HQL的语法类似于SQL,其常用的方法如下: [select|update|delete 子句] [from 类名列表] [where...

weixin_33672400的博客 490

破盾实录|Vueling航空阿卡迈防护逆向:从503挑战到Cookie生成的全流程拆解

摘要:文章分享了作者在爬取西班牙伏林航空(Vueling)机票数据时,遭遇阿卡迈(Akamai)防护系统的实战经历。起初简单的请求被拦截返回503错误,分析发现阿卡迈通过混淆JS代码实施"挑战-验证"机制,需模拟真实浏览器环境才能获取有效Cookie。作者详细拆解了逆向过程:从抓包分析JS挑战流程,到破解代码混淆和控制流平坦化,最终用Python+Pyppeteer成功模拟浏览器特征,突破防护获取数据。整个过程涉及JS反混淆、环境检测绕过和Cookie生成验证等关键技术点,为类似防护系统

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1643

YOLOv11改进 | 特殊场景检测篇 | 低照度图像增强网络SCINet改进黑暗目标检测(全网独家首发)

本文给大家带来的改进机制是低照度图像增强网络SCINet,SCINet(自校正照明网络)是一种专为低光照图像增强设计的框架。它通过级联照明学习过程和权重共享机制来处理图像,优化了照明部分以提升图像质量。我将该网络集成在YOLOv11的主干上针对于图像的输入进行增强,同时该网络的并不会增加参数和计算量,基本和普通的网络结构保持一致,同时该结构支持自定义调节层数,来控制图像增强的效果 ,非常适合想要在黑夜目标检测领域发表文章的读者,该基本网络不会影响模型的速度。欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 2207

Hibernate映射集合属性3__排序用的sort属性

如果在数据库中实现不了排序,才启用这个 sort="unsorted|natural|comparatorClass" 默认为:unsorted 自然排序:natural 比较器类排序:comparatorClass user.setAddressSet(new TreeSet());// 当设置了sort属性时,就要使用SortedSet类型 user.getAddressSe

辐_射的博客 1309

刷机维修进阶教程-----oppo机型 一加 7pro 修复基带 更改参数 实例详细步骤解析

通过课程基本可以了解 1-----oppo机型与一加7机型更改参数的具体步骤解析 2------了解oppo机型开启diag端口的具体步骤 3-----了解一加7这些机型改参数常识 。可以借鉴参考用于其他机型 4-----了解手机基带分区与基带辅助分区的作用 5-----机型参数能读取到 但不能写这种情况如何操作

小马哥的专栏 1479

Hibernate的集合映射与sort、order-by属性

【Hibernate】Hibernate的集合映射与sort、order-by属性 常用集合Set、List、Map,相信大家都很熟悉,面试中也会经常问。Set和List都继承了Collection接口,Set是无序不可重复的,不可以存储相同的元素;而Lsit是顺序存储的,可存储重复元素。Map不是继承Collection的,Map提供key到value的映射,Map也是不可重复的(key不可重复...

weixin_33835690的博客 139

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

bernate的集合映射与sort、order-by属性

<div class="postBody"> <div id="cnblogs_post_body"><p>【Hibernate】Hibernate的集合映射与sort、order-by属性</p> 常用集合Set、List、Map,相信大家都很熟悉,面试中也会经常问。Set和List都继承了Collection接口,Set是无序不可重复的,不可以存储相同的元素;而Lsit是顺序存储

光与热的博客 766

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

关于Hibernate中对集合类型的映射

Each interface has a matching implementationsupported by Hibernate, and it’s important that you use the right combination. 先说一个 @JoinColumn的问题。这个注解是用来说明关联列的信息的。按自然的做法是:多在Many端上描述这些信息,因为从DB表上来看

Laurence的技术博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Hibernate学习笔记(七)【映射值类型集合】

Set [html] view plain copy hibernate-mapping >     class name="mypack.Monkey" table="MONKEYS" >       id name="id" type="long" column="ID">         generator class="increm

qqq3670279的博客 305

使用有序集合对数据进行排序

http://developer.51cto.com/art/200909/153972.htm  解读Hibernate高级集合映射     &lt;set name="aliases"                table="person_aliases"                sort="natural"&gt;      &lt;key column="...

iteye_6988的博客 206

集合排序

Hibernate支持使用SortedSet和SortedMap两个有序集合,当我们需要映射这种有序集合时,应该为元素或元素指定sort属性,该属性值可以是如下3个值:        unsorted:映射有序集合时不排序。        natural:映射有序集合时使用自然排序。        java.util.Comparator实现类的类名:使用排序器对有序集合进行定制

u012365843的专栏 572

hibernate映射集合属性

ema:指定保存集合属性的数据表的schema的名称,用于覆盖根元素的schema属性; lazy:设置是否启动延迟加载,默认true; inverse:指定该集合作为双向关联关系中的另一端; cascade:指定当操作持久化对象时是否让操作级联到子实体类; order-by:设置数据库对集合元素排序; sort:指定集合排序顺序,可以是自然顺序,或者给定排序类进行排序; where:指定任意的SQL语句中的where条件,该条件在加载或者删除几何元素时起作用,只有满足该条件的记录才会被操作;

146

hibernate一对多sort和order by

1. 從資料庫的觀點來看,Set、Map、Bag是無序的,而List是有序的,這邊所謂的無序或有序,是指將容器中物件儲存至資料庫時,是否依容器物件中的順序來儲存。 2. 3. 然而從資料庫取得資料之後,您也許會希望Set、Map等容器中的物件可以依一定的順序來排列,您可以從兩個層次來容器中的物件排序,一是在載入資料後於JVM中排序,另一是在資料庫中直接使用orde...

Luxika的专栏 250

hibernate的one-to-many中set的sort与order-by

從資料庫的觀點來看,Set、Map、Bag是無序的,而List是有序的,這邊所謂的無序或有序,是指將容器中物件儲存至資料庫時,是否依容器物件中的順序來儲存。     然而從資料庫取得資料之後,您也許會希望Set、Map等容器中的物件可以依一定的順序來排列,您可以從兩個層次來容器中的物件排序,一是在載入資料後於JVM中排序,另一是在資料庫中直接使用order by子句來排序。    

2061

hibernate配置文件set标签中的where orderby sort的使用

set集合中可以使用屬性:where來增加條件,使用order-by來排序. &lt;set name="fileProduces"        inverse="true"        cascade="all-delete-orphan"        where="FILE_STATUS=1"        order-by="IS_PUBLISH desc,FILE_SUBMIT_TI...

一只灰机 612

Hibernate对集合排序

Hibernate对集合中的元素支持两种排序方式: Ø 在数据库中排序:简称为数据库排序,当Hibernate通过select语句到数据库中检索集合对象时,利用order by子句进行排序。 Ø 在内存中排序:简称为内存排序,当Hibernate把数据库中的集合数据加载到内存中的Java集合中后,利用Java集合的排序功能进行排序,可以选择自然排序或者客户化排序两种方式。 在映射...

张飞的IT专栏 202
上一篇: 【JS】全选、不选、反选复选框(模板)
下一篇: 【JS】根据表格ID进行排序(附注释)
励志故事
博客等级 码龄12年 99粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值