我试图通过将PageRequest
传递给findAll()
方法从spring数据存储库中检索对象。我的问题是我想让对象按多列的组合字符串排序。
假设我有一个名为Customer的对象,其字段为fname,sname。这些是我们的条目:
fname | sname |
------------------------
Peter | Parker |
Bruce | Wayne |
| Magneto |
| Wolverine |
作为排序输出,我希望订单为:
我试过了:
List<Sort.Order> orders = new ArrayList<>();
orders.add(new Sort.Order(Sort.Direction.ASC, "fname"));
orders.add(new Sort.Order(Sort.Direction.ASC, "sname"));
PageRequest pageRequest = new PageRequest(page, size, new Sort(orders));
Page<Customer> customers = repository.findAll(pageRequest);
但我得到的顺序是:
因为Magneto和Wolverine的fname是空的,而B之前是Bruce的。
答案 0 :(得分:1)
你不能使用spring数据顺序,因为你应该使用空值并按2列排序,但你可以使用@Query spring data
对它进行排序string returnQuery = "INSERT INTO Users (LastName, FirstName, IsActive, UserPassword)" + "VALUES(" + "'" + "@LastName" + "', '" + "@FirstName" + "', @IsActive" + ",'" + "@UserPassword" + "')";
答案 1 :(得分:1)
@sbjavateam是正确的,因为您无法提供自定义查询。但我认为您要使用的查询是
select c from Customer c order by CONCAT (c,firstName, ' ', c.lastName)