我在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
我试图从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)