java - 通过传入列标题对不同列进行 ORDER BY

标签 java sql jpql

我不确定这是否可以实现,但希望找到有关 java 中我的存储库的 JQPL 查询的信息。我有一个像这样的示例表:

 Name | Address | City |
--------------------------
   A  |    A    |   C  | 
   C  |    B    |   B  |
   B  |    C    |   A  |

我希望这样当我传递列名时,我将能够按列对所有行的结果进行排序。例如,如果我按名称订购,那么它应该返回 A B C 而不是 A C B。我知道这可以使用基本查询来实现,例如:

SELECT * FROM Customers
ORDER BY Name;

但是我不确定我是否可以将该选项应用于所有列。因此,如果用户决定传递订单选项来解决他们可以这样做,但如果他们决定将其设置为城市也是如此。因此,为了清楚起见,我正在尝试应用该选项来按查询的所有列进行排序,但不确定这是否可行。如果不是,还有其他选择吗?谢谢。

最佳答案

如果您使用JpaRepository,您可以使用Sort参数提供自定义排序:

@Repository
public interface CustomerRepository extends JpaRepository<Customers, Long> {

    List<Customer> findAll(Sort by);
}

您的定制排序服务:

@Autowired
private CustomerRepository customerRepository;

public List<Customer> getCustomers(String ... columnNames) {
    return customerRepository.findAll(Sort.by(columnNames));
}

public List<Customer> getCustomersOrderedByNameDescAndAddress() {
    return customerRepository.findAll(Sort.by("name").descending().and(Sort.by("address")));
}

关于java - 通过传入列标题对不同列进行 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62303414/

相关文章:

java - 如何使用拆分函数将字符串拆分为 '\'?

sql - 如何用一个 Sql 查询可视化两个外键

java - 使用 JPQL/HQL 在 JPA 中订购连接提取的集合

java - JPA @repository @Query 可以处理空实体吗?

java - 如何在 javafx 中加载 tmx/xml 文件?

java - Spring @Value 注解

mysql - 如何使用 SQL 查询连接数据库中具有相似名称的一组表?

mysql - SQL 中的小数位

java - JPQL - 在没有不必要的选择的情况下更新外键 ID

java - 如何使用 SolrJ 运行完全导入命令