【问题标题】:Difference between JpaSort vs SortJpaSort 与排序之间的区别
【发布时间】:2021-11-30 03:37:50
【问题描述】:

我已经看到,在使用 Spring Boot 时,有 JpaSort 和 Sort 可用于排序和在分页中使用。我试图找出这两者之间的区别,但找不到太多相关信息。

有人能从性能角度和实现角度告诉我这两者之间的区别吗?

【问题讨论】:

  • 好吧,JpaSort 是(即扩展)Sort 的子类。 JpaSort 提供了一些用于排序的辅助方法,例如 #unsafe() 有时很有用。最好的办法是检查文档以查看所有差异。

标签: spring-boot hibernate sorting jpa


【解决方案1】:

(1) 什么是JPA 元模型

通常,当我们编写条件查询时,我们需要引用实体 类及其属性。现在,这样做的方法之一是 将属性名称作为字符串提供。但是,这有几个 缺点。 JPA 元模型由社区引入以避免 这些缺点并提供对元数据的静态访问 托管实体类。一方面,我们必须查找 实体属性。并且,如果列名稍后更改 项目生命周期,我们必须重构每个查询名称所在的位置 正在使用。

来源https://www.baeldung.com/hibernate-criteria-queries-metamodel#prerequisites

(2)JpaSortSort之间的继承

public class JpaSort extends Sort

(3) 权威定义。

Sort 查询的排序选项。您必须至少提供要排序的属性列表,其中不得包含空字符串或空字符串。方向默认为DEFAULT_DIRECTION

JpaSort 用于包装 JPA 元模型属性 进行排序的查询的排序选项。

https://docs.spring.io/spring-data/data-jpa/docs/current/api/org/springframework/data/jpa/domain/JpaSort.html

我们来看例子

Page<Product> allProductsSortedByName = productRepository.findAll(Sort.by("name"));
Order order1 = new Order(Sort.Direction.DESC, "published");

List<Employee> list = repo.findByDepartment("Sales", JpaSort.unsafe("LENGTH(name)", "salary"));

(4) 结论: JpaSort 支持 JPA 元模型属性 Sort 不支持的。

【讨论】:

  • 您能否补充一点关于JpaSort.unsafe 的信息。有没有什么特别之处。
  • 喜欢未经检查的异常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 2014-10-30
  • 2021-12-07
  • 2016-02-09
相关资源
最近更新 更多