我在Spring Data中遇到NullHandling问题。我试图将自定义NullHandling传递给我的findAll存储库方法 - 如下所示:
Page<Developer> developerPage = developerRepository.findAll(
new PageRequest(0, 2, new Sort(new Sort.Order(Sort.Direction.ASC, "user").nullsFirst()))
);
但是,我将show-sql选项设置为true,并且在日志中我看到在传递给数据库的查询中没有提及null处理。我得到了错误的结果(Postgres和H2的结果更加不同,但我知道它是每个数据库的默认空值处理之间的区别)。 Postgres的配置是:
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost/postgres?useUnicode=yes&characterEncoding=UTF-8
spring.datasource.username=postgres
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
这是什么问题? Spring Data JPA是否支持自定义空值处理?
编辑:
我发现JPA的查询订单部分是在方法toOrders(..)的QueryUtils类中创建的。有趣的是 - 从spring数据中排序实现被映射到JPA的Sort实现,其中不支持null处理。还有一个jira问题描述它不受支持但是从2014年开始:https://jira.spring.io/browse/DATACMNS-491