Spring Data JPA在Postgres数据库中的NullHandling排序

8

我在Spring Data中遇到了NullHandling的问题。我正在尝试将自定义的NullHandling传递给我的repository的findAll方法 - 像下面这样:

Page<Developer> developerPage = developerRepository.findAll(
            new PageRequest(0, 2, new Sort(new Sort.Order(Sort.Direction.ASC, "user").nullsFirst()))
    );

然而,我已经将选项show-sql设置为true,在日志中看到传递给数据库的查询中没有提及空值处理。我得到了错误的结果(即使对于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支持自定义null处理吗?
编辑:
我发现JPA的查询顺序部分在QueryUtils类的toOrders(..)方法中创建。有趣的是,Spring Data的Sort实现被映射到JPA的Sort实现,但在那里不支持null处理。还有一个JIRA问题描述了该问题,但它来自2014年: https://jira.spring.io/browse/DATACMNS-491

1
嗨,亚当,你找到什么了吗?我现在也遇到了同样的问题。 - wederer
1个回答

0

您可以在app.yml中使用此属性: spring.jpa.hibernate.order_by.default_null_ordering: last


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接