小编Ada*_*dam的帖子

使用NullHandling(Postgres)的Spring Data JPA订单

我在Spring Data中遇到NullHandling问题.我试图将自定义NullHandling传递给我的findAll存储库方法 - 如下所示:

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

但是,我有选项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
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?Spring Data JPA是否支持自定义空值处理?

编辑:

我发现JPA的查询顺序部分是在方法toOrders(..)的QueryUtils类中创建的.有趣的是 - 从spring数据中排序实现被映射到JPA的Sort实现,其中不支持null处理.还有一个jira问题描述它不受支持但是从2014年开始:https://jira.spring.io/browse/DATACMNS-491

spring hibernate jpa spring-data spring-data-jpa

7
推荐指数
1
解决办法
546
查看次数

Java9 HttpClient SSLHandshakeException

我试图从Java 9测试新的HttpClient.出于测试目的,我使用的是https://jsonplaceholder.typicode.com提供的api .但是,我收到握手异常,不知道原因.

我正在运行的代码:

 private final String TEST_URI = "https://jsonplaceholder.typicode.com/posts";

    @Test
    public void shouldReturnStatusOKWhenSendGetRequest() throws IOException, InterruptedException, URISyntaxException {
        HttpRequest request = HttpRequest.newBuilder()
                .uri(new URI(TEST_URI))
                .GET()
                .build();
        HttpResponse<String> response = HttpClient.newHttpClient()
                .send(request, HttpResponse.BodyHandler.asString());
        assertThat(response.statusCode(), equalTo(HttpURLConnection.HTTP_OK));
    }
Run Code Online (Sandbox Code Playgroud)

我收到一个例外:

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:198)
    at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:159)
    at java.base/sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1905)
    at java.base/sun.security.ssl.SSLEngineImpl.processInputRecord(SSLEngineImpl.java:1140)
    at java.base/sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1020)
    at java.base/sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:902)
    at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:680)
    at java.base/javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:626)
    at jdk.incubator.httpclient/jdk.incubator.http.AsyncSSLDelegate.unwrapBuffer(AsyncSSLDelegate.java:476)
    at jdk.incubator.httpclient/jdk.incubator.http.AsyncSSLDelegate.handshakeReceiveAndUnWrap(AsyncSSLDelegate.java:395)
    at jdk.incubator.httpclient/jdk.incubator.http.AsyncSSLDelegate.doHandshakeImpl(AsyncSSLDelegate.java:294)
    at jdk.incubator.httpclient/jdk.incubator.http.AsyncSSLDelegate.doHandshakeNow(AsyncSSLDelegate.java:262)
    at jdk.incubator.httpclient/jdk.incubator.http.AsyncSSLDelegate.connect(AsyncSSLDelegate.java:233)
    at jdk.incubator.httpclient/jdk.incubator.http.AsyncSSLConnection.connect(AsyncSSLConnection.java:78)
    at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.<init>(Http2Connection.java:272)
    at jdk.incubator.httpclient/jdk.incubator.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:108)
    at jdk.incubator.httpclient/jdk.incubator.http.ExchangeImpl.get(ExchangeImpl.java:86)
    at jdk.incubator.httpclient/jdk.incubator.http.Exchange.establishExchange(Exchange.java:257) …
Run Code Online (Sandbox Code Playgroud)

java ssl java-9 tls1.2 java-http-client

6
推荐指数
1
解决办法
569
查看次数