我不确定这是否可以实现,但希望找到有关 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/