我们将这么多参数传递给android的query()方法.Android通过提供查询方法简化了我们的工作.有没有办法让我可以打印android将从这个查询方法参数形成的sql查询,android创建并发送到sqlite.
我正在努力构建一个 REST API,其中来自 Oracle 数据库的大量数据可以通过流式传输到客户端应用程序(如文件下载或直接流)分块发送。
我从 JpaRepository 获取 Stream,如下所示 -
@Query("select u from UsersEntity u")
Stream<UsersEntity> findAllByCustomQueryAndStream();
Run Code Online (Sandbox Code Playgroud)
但现在挑战来了将此流写入 StreamingResponseBody 输出流
我尝试了很多方法但没有成功 -
第一种方法-
Stream<UsersEntity> usersResultStream = usersRepository.findAllByCustomQueryAndStream();
StreamingResponseBody stream = outputStream -> {
Iterator<UsersEntity> iterator = usersResultStream.iterator();
try (ObjectOutputStream oos = new ObjectOutputStream(outputStream)) {
while (iterator.hasNext()) {
oos.write(iterator.next().toString().getBytes());
}
}
};
Run Code Online (Sandbox Code Playgroud)
出现错误-
java.sql.SQLException: Closed Resultset: next
at oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:565) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
Run Code Online (Sandbox Code Playgroud)
第二种方法-
StreamingResponseBody stream = new StreamingResponseBody() {
@Transactional(readOnly = true)
@Override
public void writeTo(OutputStream outputStream) throws IOException { …Run Code Online (Sandbox Code Playgroud) 我创建了一个带有更新 (PUT) 请求的控制器,并在 id 字段上应用了正则表达式,如下所示,但该模式未执行并返回 SUCCESS 而不是 BAD_REQUEST。
@PutMapping("users/{id}")
public Mono<ResponseEntity<UsersApiDTO>> update(@PathVariable @Pattern(regexp = "^[A-Za-z]{1,20}$") String id, @RequestBody @Valid UsersApiDTO usersApiDTO) {
// return response
}
Run Code Online (Sandbox Code Playgroud)
当我传递错误的“id”路径字段值“T001223242345”时,它正在工作。它应该给我 BAD_REQUEST,因为它适用于请求正文,就像我为正文参数传递任何无效值一样,它会给出 BAD_REQUEST。
我浏览了很多链接和博客,但还没有运气。