Hibernate 文档:@OrderBy - 它是不是在内存中排序?

Posted

技术标签:

【中文标题】Hibernate 文档:@OrderBy - 它是不是在内存中排序?【英文标题】:Hibernate documentation:@OrderBy - is it sorted in memory?Hibernate 文档:@OrderBy - 它是否在内存中排序? 【发布时间】:2013-06-05 08:30:26 【问题描述】:

在hibernate 4 的文档中指定如下:

7.2.2.1。列表

可以通过两种不同的方式映射列表:

作为有序列表,其中的顺序未在数据库中具体化

作为索引列表,订单在数据库中具体化

要在内存中排序列表,请将@javax.persistence.OrderBy 添加到您的 财产。此注释将逗号分隔的列表作为参数 (目标实体的)属性并对集合进行排序 相应地(例如 firstname asc、age desc、weight asc nulls last),如果 字符串为空,集合将按主键排序 目标实体。

我不明白关于那个的注释 “要在内存中排序列表,请将@javax.persistence.OrderBy 添加到您的属性中”

将使用 SQL orderby 将排序过程放入 DBMS 的内存中还是放入我的 java 应用程序的内存中??

如果我只使用简单的一对多关系对其进行测试:(一个用户有多个帐户)使用这样的片段

@javax.persistence.OrderBy("account-sum ASC, date DESC") // 
    private Set<Account> accounts= new HashSet<>();

order by 子句将显示在 HQL 语句中......

是否可以看到基于 HQL 语句生成的 SQL? 非常感谢您的帮助:-)

【问题讨论】:

【参考方案1】:

排序将通过在生成的 SQL 中添加 order by 子句来完成,以便数据库处理排序。

可以通过设置 hibernate.show_sql 配置属性来配置 Hibernate 以显示 SQL。

See the hibernate documentation for configuring this property.

【讨论】:

以上是关于Hibernate 文档:@OrderBy - 它是不是在内存中排序?的主要内容,如果未能解决你的问题,请参考以下文章

orderBy:更新缓存查询的结果

为啥 Hibernate 会为此 HQL 抛出 QuerySyntaxException?

Hibernate中的HQL查询与缓存机制

Hibernate分页功能数据重复问题

Hibernate参考文档

Hibernate核心API