今天,我们发布了Hibernate ORM 6.2的新维护版本:6.2.2.Final。

新功能

此版本包括多个错误修复和一些小的性能改进。

批量获取性能

通过更好的缓存SQL AST和其他可能的引用,批量获取加载(@BatchSize)的性能得到了提高。有关详细信息,请参阅HHH-16441

多键加载的SQL ARRAY

当通过多个键加载实体或集合时,Hibernate现在可以利用一个SQL ARRAY值参数一次传递所有ID。这适用于所有多键加载。

  • 批量获取

  • Session#byMultipleIds

  • Session#byMultipleNaturalId

这仅限于单列键和支持ARRAY类型的数据库。在无法使用ARRAY参数的情况下,Hibernate会回退到其填充策略,该策略使用固定大小的IN参数列表预构建的SQL AST。

有关详细信息,请参阅HHH-16466

错误修复

表解析和自引用关联

我们修复了Hibernate内部解析查询中使用的表引用的方式,特别关注自引用关联和可能使用外键列进行优化的情况(请参阅HHH-16382及相关问题)。

字节码增强

我们修复了与字节码增强相关的一些问题

  • 当启用双向关联管理时,会生成有缺陷的代码,阻止Hibernate正确处理关联的双方(请参阅HHH-15602)。

  • 当同一实体上同时使用一个懒加载的@ManyToOne关联和一个急加载关联时,在某些情况下,Hibernate不会急初始化后者(请参阅HHH-16477)。

GROUP BY和ORDER BY子句

我们修复了与GROUP BY和ORDER BY子句相关的几个错误。

  • 当我们根据实体值属性(如一对一关联)进行分组时,现在我们总是将渲染的 GROUP BY 子句扩展到使用实体类型的所有列,以确保底层 DBMS 可以正确地对选择进行分组(请参阅 HHH-16409)。

  • 当使用窗口或有序集聚合函数时,我们现在明确禁止在 ORDER BY 子句中使用别名或位置表达式,以防止查询解释出现问题。我们还修复了一个阻止用户在 OVERWITHIN GROUP 子句中按多个列表达式排序的漏洞(请参阅 HHH-16347)。

@Where 子句

我们修复了一个漏洞,该漏洞导致在删除突变查询中使用 @Where 子句时渲染错误,特别是对于清理关联表的子查询(请参阅 HHH-16392)。

Sybase 和 jConnect JDBC 驱动程序

我们修复了在使用 Sybase 和 jConnect JDBC 驱动程序时遇到的一些问题,有关修复的详细信息,请参阅页面底部的完整更改列表链接。

Java 记录

Hibernate 6.2 引入了对带有 @Embeddable 注解的 Java 记录的支持,但仍有一些问题存在

  • Java 记录可嵌入类型未包含在 JPA 元模型生成中(请参阅 HHH-16261)。

  • Java 记录可嵌入类型的属性在 ValueAccess#getValues() 中排序不正确(请参阅 HHH-16457)。

泛型

我们继续改进在实体类中使用 Java 泛型的支持,这次我们解决了一个关于带有 @Enumerated 注解的泛型枚举属性的问题(请参阅 HHH-16479)。

您可以在此处找到本版本的完整更改列表。

结论

有关详细信息,请参阅

反馈、问题、想法?

要取得联系,请使用常规渠道


返回顶部