Hibernate查询语言:HQL

11-4 AEB 算法原理及系统组成 本专题旨在探讨如何利用仿真软件开发自动紧急制动系统AEB,主要通过整理开发流程,实现从需求到验证的全流程掌握,为后续开发提供支持;同时,研究了如何在汽车自动驾驶仿真工具中开发自己的算法,并解决了从ISO、E-CNAP、GB/T以及交通法规等提炼出功能需求的问题,以快速实现原型模型的开发。本专题重点讲解了AEB的工作原理、系统/软件架构和需求、算法模型及实现、CCRs/CCRb/CCRm建模与仿真、VRU-AEB-B/P/M建模与仿真,同时还提供了测试用例,期待将AEB算法成功地产品化。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> HQL:Hibernate Qusery Language,如果你已经熟悉它,就会发现它跟SQL非常相像。不过 你不要被表面的假象迷惑,HQL是面向对象的(OO,用生命的眼光看待每一个对象,他们是如此 鲜活)。如果你对JAVA和SQL语句有一定了解的话,那么HQL对你简直易如反掌,你完全可以利用在公车上的时间掌握它。 以下从几个方面进行慢慢深入: 1。大小些敏感 大家知道Query是对大小写不敏感的,但是在HQL(前面提到它是OO的)中那么对象类的名称和属性确实大小写敏感的(符合java编程语法)。 如:sElect cat.name from Cat as cat和select cat.name from Cat as cat是一样的 但是: sElect cat.name from CAT as cat和select cat.name from Cat as cat确实不一样的。 2。from语句 最简单的: from eg.Cat 它只是简单的返回所有eg.Cat的实例 通常我们此时会为eg.Cat其个别名,因为在query的其余部分可能会用到(参看上边关于大小写 敏感时的例子情形),如: from eg.Cat as cat 这里as可以省略。 上边只是单表查询,多表的情况如下写法: from eg.Cat,eg.Dog from eg.Cat as cat,eg.Dog as dog 3。join相关 (inner) join left (outer) join right (outer) join full join HQL同样对SQL中的这些特性支持 下面插播一个小话题,关于上边的那些特性,我一直都没怎么用,今天既然说到这里,就想 把上边的几个特性的用法说一下,也算对自己的一个补充: 假设有两个表:部门、员工,下面列举一些数据: 员工(Employee): ID Name DepNo 001 Jplateau 01 002 Jony 01 003 Camel 02 部门(Department): ID Name 01 研发部 02 营销部 在Hibernate中我们操纵的都是对象,所以我们操纵的是部门类和员工类 1).(inner) join select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name as name2 from Employee as employee join Department as department on employee.DepNo= department.ID (注意到条件语句我用on 没有用where) 那么执行结果是什么呢? id1 name1 id2 name2 001 Jplateau 01 研发部 002 Jony 01 研发部 2).left (outer) join select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name as name2 from Employee as employee left join Department as department on employee.DepNo= department.ID 那么执行结果又该是什么呢? id1 name1 id2 name2 001 Jplateau 01 研发部 002 Jony 01 研发部 003 Camel null null {就是说此时我要已第一个表的记录多少为准,第二个表中没有相应纪录的时候填充null} 3). right (outer) join select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name as name2 from Employee as employee right join Department as department on employee.DepNo= department.ID 那么执行结果又该是什么呢? id1 name1 id2 name2 001 Jplateau 01 研发部 002 Jony 01 研发部 null null 02 营销部 {就是说此时我要已第二个表的记录多少为准,第一个表中没有相应纪录的时候填充null} 4。select语句 就是要确定你要从查询中返回哪些对象或者哪些对象的属性。写几个例子吧: select employee form Employee as employee select employee form Employee as employee where employee.Name like 'J%' select employee.Name form Employee as employee where employee.Name like 'J%' select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name as name2 from Employee as employee right join Department as department on employee.DepNo= department.ID select elements(employee.Name) from Employee as employee (不明白elements到底是做什么用的?望给于说明) 等等 5。数学函数 JDO目前好像还不支持此类特性。 avg(...), sum(...), min(...), max(...) count(*) count(...), count(distinct ...), count(all...) 其用法和SQL基本相同 select distinct employee.name from Employee as employee select count(distinct employee.name),count(employee) from Employee as employee 6。polymorphism (暂时不知道如何解释?) from com.test.Animal as animal 不光得到所有Animal得实例,而且可以得到所有Animal的子类(如果我们定义了一个子类Cat) 一个比较极端的例子 from java.lang.Object as o 可以得到所有持久类的实例 7。where语句 定义查询语句的条件,举几个例子吧: from Employee as employee where employee.Name='Jplateau' from Employee as employee where employee.Name like 'J%' from Employee as employee where employee.Name like '%u' 在where语句中“=”不光可以比较对象的属性,也可以比较对象,如: select animal from com.test.Animal as animal where animal.name=dog 8。表达式 在SQL语句中大部分的表达式在HQL中都可以使用: mathematical operators , -, *, / binary comparison operators =, >=, <=, <>, !=, like logical operations and, or, not string concatenation || SQL scalar functions like upper() and lower() Parentheses ( ) indicate grouping in, between, is null JDBC IN parameters ? named parameters :name, :start_date, :x1 (这种应该是另一种"?"的变通解决方法) SQL literals 'foo', 69, '1970-01-01 10:00:01.0' Java public static final constants eg.Color.TABBY 其他不必解释了,在这里我只想对查询中的参数问题说明一下: 大家知道在SQL中进行传递参数进行查询的时候,我们通常用PreparedStatement,在语句中写一大堆的“?”, 在hql中也可以用这种方法,如: List mates = sess.find( "select employee.name from Employee as employee " "where employee.Name=? ", name, Hibernate.STRING ); (说明:上面利用Session里的find方法,在hibernate的api Session中重载了很多find方法,它可以满足你多种形式的查询) 上边是一个参数的情形,这种情况下紧接着引入参数和定义参数的类型,当为多个参数,调用另一个find方法,它的后两个 参数都是数组的形式。 还有另外一种方法来解决上边的问题,JDO也有这样的方法,不过和hibernate的表现形式上有差别,但他们两个骨子里却是 一样的,如: Query q = sess.createQuery("select employee.name from Employee as employee where employee.Name=:name"); q.setString("name", "Jplateau"); //当有多个参数的时候在此逐一定义 Iterator employees = q.iterate(); 9。order 语句 和sql语句没什么差别,如: select employee.name from Employee as employee where employee.Name like 'J%' order by employee.ID desc (或者asc) 10。group by 语句 同样和sql语句没什么差别,如: select employee.name,employee.DepNo from Employee as employee group by employee.DepNo select foo.id, avg( elements(foo.names) ), max( indices(foo.names) ) from eg.Foo foo group by foo.id {Note: You may use the elements and indices constructs inside a select clause, even on databases with no subselects.} 谁帮我解释一下上边两句,谢过! 11。子查询 hibernate同样支持子查询,写几个例子: from eg.Cat as fatcat where fatcat.weight > ( select avg(cat.weight) from eg.DomesticCat cat ) 小节: 其实HQL和SQL是非常相似的,在写的时候你只要时刻想到对象的概念,那么你完全可以用SQL的思想来写HQL. 参考资源:Hibernate参考手册第七章以及第九章,建议由时间的并且要用hibernate开发项目的朋友仔细研读该手册。 昨天看了《海底总动员》 ,不知道中国的动画片何时能“站”起来?
RTX4090上跑CenterNet训练 参考实现 url=https://github.com/xingyizhou/CenterNet.git commit_id=5b1a490a52da57d3580e80b8bb4bbead9ef2af96 阅读详情

相关推荐

Windows 本地 PostgreSQL 忘记 postgres 密码后,如何重置密码并给 root 用户最高权限

<think>我们只需要根据内容生成摘要,不超过150字。摘要应该简明扼要概括主要问题和解决步骤。注意是中文摘要。</think>在Windows本地开发中,因root数据库账号无CREATEDB权限且忘记postgres超级管理员密码,通过临时修改pg_hba.conf为trust认证重置密码,并重启PostgreSQL服务进行登录,最后授予root用户SUPERUSER等权限,完成数据库创建。

MZH 37

项目中比较好用的web打印控件——Lodop

项目中比较好用的web打印控件——Lodop 由于公司业务需求,需要控件打印控件,在网上看到了很多打印插件,觉得Lodop打印插件比较好用,下面介绍操作方法: 1、准备工作,下载控件及官方demo 下面给出官方的下载地址:http://www.lodop.net/download.html 2、基本使用 由于Lodop控件是一个exe程序,所以第一次使用的时候,需要提示用户安装这个控件(...

tanzhiyuantanzhiyuan的博客 2581

2025贵州省河流水系矢量图层shp数据-水系线水系面数据下载

2025贵州省河流水系矢量图层shp数据下载-包含水系线和水系面数据,几千上万条数据,非常细化,坐标系为WGS1984坐标系统

使用Lodop控件打印表单和二维码

1.了解lodop 1.1Lodop的定义 Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码直接实现复杂打印。控件功能强大,却简单易用,所有调用如同JavaScript扩展语句一样。 1.2Lodop的下载 下载链接:http://www.lodop.net/download.html 一路安装就行,安装好之后解压 可以跟着示例一个一个学习,不懂的地方结合源代码一起学习 2.在页面中引入lodop (必须要安装lodop才行,不然没有效果) 在页面中嵌入l

weixin_45111741的博客 1万+

使用LODOP打印控件实现打印功能的解决方案

功能丰富:LODOP控件可以实现各种打印功能,如文字、图片、表格等,而且可以自定义页面大小、边距等参数。易于使用:LODOP控件提供了简单易懂的API接口,使得应用程序开发者可以快速上手并实现需要的打印功能。可定制性强:LODOP控件支持自定义纸张大小和分页设置,并且可以添加水印、背景等效果。支持多种浏览器:LODOP控件支持多种主流浏览器,如IE、Chrome、Firefox等。多语言支持:LODOP控件支持中文、英文等多种语言

Jnsone的博客 1万+

页面调用Adobe Reader自带的控件实现pdf打印

1、业务场景          一般的业务场景里,只需要将pdf文件下载到本地,然后打开直接打印就可以了。       但是,有的场景会考虑到pdf文件的敏感性,需要pdf文件不能被下载,只能打印且只能打印一次,这就需要考虑使用控件了。   2、Adobe Reader         Adobe Reader是一款优秀的PDF文档阅读软件。你可以使用Adobe Reader查看、打...

多米乐猪的博客 2万+

WEB免费打印控件推荐

在WEB系统中,打印的确是个烦人的问题。 要么自己开发打印控件,如果项目时间紧,肯定来不及。 要么购买成熟的打印控件,如果是大项目可以考虑,但如果项目只有几K到1、2W之间,这就麻烦了。 前段时间有机会接触了一下WEB打印。在博客园、CSDN上找了老半天,终于,功夫不付有心人,终于找到了。 现在就推荐给大家分享。 1、DLPrinter DLPrinter打印控件完全免费,界面大方、使用简单、但无签名,支持打印预览、直接打印,可设置页眉、页脚、页边距、打印份数、纸张大小等信息。遗憾的是作者不..

az44yao的专栏 2225

报表口径不是-SQL-汇总-销售毛额-退单净额与历史重算门禁

商品销售报表不是写一条 SUM SQL 就结束。本文从销售毛额、退单金额、净销售额的口径拆分切入,讨论旧字段为什么不能静默改义,销售事实和退单事实为什么要按不同发生时间归属,历史日报、周报、月报如何级联重算,以及发布前为什么必须有 DDL、回填、前后端展示、导出和对账门禁。重点不是算出一个数字,而是让报表数字可解释、可重算、可验证。

程序员贺加贝的博客 318

PostgreSQL 并发约束实战(第 1 篇):排他约束如何挡住并发重复预约

两个用户同时预订会议室 A 的 10:00—11:00。两个请求都先查询“没有冲突”,随后各自插入一条预约,两个事务也都成功提交。SQL 没报错,唯一键没有重复,会议室却被卖了两次。PostgreSQL 真正形成差异的地方,不是比另一种数据库多几个数据类型,而是能把“同一资源的时间段不得重叠”变成提交时持续成立的数据库约束。这篇文章只证明这一个判断。它不证明 PostgreSQL 在所有 OLTP 场景都优于 MySQL,也不证明所有业务规则都应该塞进数据库。

weixin_42426485的博客 504

sql二次注入攻击原理

二次注入,又称二阶 SQL 注入(Second-Order SQL Injection),是一种特殊的 SQL 注入形式。一阶注入:攻击者提交的恶意数据,在当前请求中就被直接拼接到 SQL 语句并执行,攻击效果立即显现。二次注入:攻击者提交的恶意数据,在写入时被正确地转义、过滤或使用参数化处理,安全地存储进数据库;但当这些数据在后续的某个请求中被读取出来,并再次被拼接进新的 SQL 语句执行时,由于未做二次过滤,注入漏洞才真正被触发。"第一次存储是安全的,第二次使用时是危险的。

2303_82039857的博客 282

【好靶场】SQL 注入-布尔盲注-1

本题表面上是一个“根据用户 ID 判断用户是否存在”的功能。{"exists":true,"message":"用户存在","status":"success"}{"exists":false,"message":"用户不存在","status":"success"}这种通过响应中的真假差异来推断数据库查询结果的漏洞,就是布尔盲注。定位 /check?id= 接口↓观察 exists 字段的真假↓构造恒真、恒假条件确认注入↓确定输入需要使用 ') 闭合↓。

Sagittarius_A*的博客 226

PostgreSQL 计划缓存实战(第 10 篇):预编译 SQL 前五次都快,第六次为什么可能变慢

普通租户只有百条订单,头部租户却有九十万条。相同 prepared statement 前几次都快,某个连接复用后,头部租户突然用索引扫描九十万行;重连又恢复。直接答案是:这个会话可能在累计五个 custom plan 后开始评估 generic plan,而 generic plan 看不到本次参数,冷热租户差异便被平均分布掩盖。Custom plan 看得到本次参数,generic plan 省掉重复规划却只能按平均分布估算。参数倾斜越强,省下的规划毫秒越可能换来执行秒级退化。

weixin_42426485的博客 301

PostgreSQL 日报 | PG19 外键快速路径越界写入(8 月 30 日)

通过智能化的信息筛选、内容提炼与实践工具,PGNexus 帮助用户更高效地了解 PostgreSQL 技术动态,参与社区协作,并完成从学习到验证的完整闭环。Andrey Borodin 支持将随机化范围限制在 SPLIT_DEFAULT 叶页分裂,指出仅在等惩罚值候选位置中随机选择,既能保留现有的后缀截断行为,又能使页面占用率维持在目标附近。问题的根源在于:子查询中包含引用连接列的 CASE 表达式,子查询被上拉后,eval_const_expressions 将该 CASE 化简为…

IvorySQL的博客 228

PostgreSQL 数据正确性实战(第 4 篇):ON CONFLICT 两次都成功,旧订单为什么覆盖新状态

订单版本 105 的“已支付”先写入,版本 103 的“已取消”因网络重试后到。两次 UPSERT 都成功,结果却退回旧状态。能原子裁决“写哪一行”,不能替业务定义“哪个事件更新”。唯一键幂等、业务顺序和消息 Exactly-Once 是三种不同保证。

weixin_42426485的博客 250

PostgreSQL 内存调优实战(第 12 篇):work_mem 只调大 64 倍,峰值为什么远不止 64 倍

排序落盘后,团队把work_mem从 4MB 全局调到 256MB。单条报表快了,BI 高峰数据库却被 OOM Killer 终止。work_mem约束的是一次 Sort、Hash 等操作的基础预算,不是一条查询、更不是整个实例的内存上限;多个操作、并行参与者与并发查询会叠加,Hash 还会乘。work_mem是许多 Sort、Hash 等操作各自的基础预算。多个节点、Hash 倍数、并行参与者和并发连接会继续相乘;允许受控落盘通常比全局追求零临时文件更安全。

weixin_42426485的博客 290

Rocky Linux 8 从零安装 psql(PostgreSQL 客户端)

连接远程pgpsql -h ip地址 -p 端口 -U用户名 -d数据库名#本地登录(操作系统身份认证)psql

m0_62164804的博客 228

PostgreSQL VACUUM 运维实战(第 7 篇):Autovacuum 一直在跑,死元组为什么越积越多

值班人员看到持续活跃,就判断清理正常。可订单表每分钟制造 50 万个 dead tuple,VACUUM 每分钟只消化 20 万个:任务没停,债务却以每分钟 30 万个增长。Autovacuum 是否有效,不能看进程是否存在,要看可回收量、触发等待、排队时间和清理吞吐能否压住 dead tuple 的净增长。

weixin_42426485的博客 331

MySQL 数据库从入门到实战:原理、安装与 SQL 详解

> **摘要**:本文是一份系统性的 MySQL 数据库学习教程,内容涵盖数据库基础理论、MySQL 安装与基本使用、以及 SQL 语言三大核心模块。首先从数据的分类、数据管理发展历史、数据库管理系统(DBMS)及关系型数据库理论(E-R 模型、范式)入手,帮助读者建立扎实的理论基础;随后详细介绍 MySQL 的安装、多实例配置、主要组成与常用客户端工具(mysql、mysqladmin、mycli 等);最后深入讲解 SQL 语言,包括数据库与表的 DDL 操作、数据的增删改查(DML)以及查询(DQL)

2403_88632628的博客 217

FastAPI + SQLAlchemy 异步会话(AsyncSession)核心方法

result = await db.execute(select(News).where(...)) # 执行查询,返回 Result 对象。items = result.scalars().all() # 提取 Python 对象列表。await db.refresh(new_news) # 将生成的ID加载到本地对象。await db.commit() # 自动检测到对象变更,生成UPDATE发送。# ① 标记操作(内存中记录,未发SQL

m0_52302665的博客 306

修复安全漏洞,支持MCP模型配置,SQLBot开源智能问数系统v1.10.1版本发布

SQL示例和术语列表两大核心功能模块新增过滤搜索功能。

FIT2CLOUD飞致云的博客 175

# Text2SQL 工程实战:用 Qdrant 向量库让系统理解数据库结构

<think>我们根据要求,需要根据提供的内容生成≤150字的文章摘要。用户说“根据以下内容,生成≤150字的文章摘要”,内容是一篇关于Text2SQL工程实战的文章,讲用Qdrant向量库让系统理解数据库结构。我们需要写一个摘要,概括文章主旨、主要内容、亮点(比如10个踩坑点、完整代码、架构等)。要控制在150字以内。 注意是“文章摘要”,不是“导读”。应该用简洁的语言概括。我们输出摘要即可。 先思考内容:文章主要解决Text2SQL系统中大模型理解数据库结构的问题,提出用向量库(Qdrant)对Sche

l125865的博客 433
上一篇: 用SERVLET过滤来实现权限控制
下一篇: James 2.1 -使用TLS
java169
博客等级 码龄18年 27粉丝 2568原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值