如何使用Spring Repository基于null / not null值对列进行排序?

时间:2013-07-31 15:32:32

标签: java spring mongodb spring-data

我在MongoDB中使用Spring Data。我有一个要求,我想在一个字段上排序,但最后显示空值的行。在SQL的情况下,我们将编写以下查询

select myField
   from MyTable
   order by case when myField is null then 1 else 0 end, myField

但我无法找到使用PagingAndSortingRepository排序的方法。我们如何定义Sort对象?

想要将其排序为ASC,字段类型为String

1 个答案:

答案 0 :(得分:1)

查看有关类型安全查询的section 6.3.3 of Spring Data MongoDB。您可以在存储库接口上实现QueryDslPredicateExecutor:

public interface PersonRepository extends MongoRepository<Person, String>, QueryDslPredicateExecutor<Person> {

   // additional finder methods go here

}

你可以使用这种方法:

List<T> findAll(Predicate predicate, OrderSpecifier<?>... orders);

OrderSpecifier构造函数采用NullHandling enumeration参数,您可以将其设置为NullsFirst / NullsLast。