Java 如何使用Spring存储库根据空/非空值对列进行排序?

Java 如何使用Spring存储库根据空/非空值对列进行排序?,java,spring,mongodb,spring-data,Java,Spring,Mongodb,Spring Data,我在MongoDB中使用Spring数据。我有一个要求,我想对一个字段进行排序,但在最后显示带有空值的行。对于SQL,我们将编写以下查询 select myField from MyTable order by case when myField is null then 1 else 0 end, myField 但我无法找到使用Paging和SortingRepository进行排序的方法。如何定义排序对象 要将其排序为ASC,字段类型为String请查看关于类型安全查询。您可

我在MongoDB中使用Spring数据。我有一个要求,我想对一个字段进行排序,但在最后显示带有空值的行。对于SQL,我们将编写以下查询

select myField
   from MyTable
   order by case when myField is null then 1 else 0 end, myField
但我无法找到使用Paging和SortingRepository进行排序的方法。如何定义排序对象

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

请查看关于类型安全查询。您可以在存储库界面上实现QueryDSLDPredicateExecutor:

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

   // additional finder methods go here

}
公共接口PersonRepository扩展了MongoRepository、QueryDSL谓词执行器{
//其他的查找方法在这里
}
您可以使用以下方法:

List<T> findAll(Predicate predicate, OrderSpecifier<?>... orders);
List findAll(谓词谓词、顺序说明符…顺序);

构造函数接受一个可以设置为NullsFirst/NullsLast的参数。

是否按ASC ou DESC顺序排序?哪种类型的字段是字符串?要在ASC中排序,而字段类型是字符串我认为这是不可能的。您提到您的要求是在最后显示带有null的行,所以为什么不像往常一样对查询进行排序,然后以编程方式将null值放在末尾呢?我没有尝试过。切换到MySQL,因为该应用程序对MongoDB没有任何特定要求。您的答案似乎仍然是唯一的方法。Spring数据MongoDB链接是404