正在执行查询,但未得到任何结果。
路由器:-api/v1/service/appt/usr/{usr_id}
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
public Mono<ServerResponse> retrieveProjectsByUsr(ServerRequest request) {
final String userIdStr = request.pathVariable(USER_ID_PARAM);
final Optional<String> stDateStr = request.queryParam("stDate");
final Optional<String> endDateStr = request.queryParam("endDate");
final LocalDateTime stDate = LocalDateTime.parse(stDateStr.get(), DATE_TIME_FORMATTER);
final LocalDateTime endDate = LocalDateTime.parse(endDateStr.get(), DATE_TIME_FORMATTER);
long userId = Long.parseLong(userIdStr);
return secContext.retrieveUser().flatMap(usr -> {
Flux<Appt> appts = projectRepository.findApptsBetween(stDate, endDate, userId, usr.getOrgId());
return ServerResponse.ok().contentType(APPLICATION_JSON).body(appts, Project.class);
});
}
存储库代码,
@Repository
public interface ApptRepository extends ReactiveCrudRepository<Appt, Long> {
@Query("select * from appt where usr_id = :usrId and org_id = :orgId and start_time BETWEEN :stDate and :endDate")
Flux<Appt> findApptsBetween(LocalDateTime stDate, LocalDateTime endDate, long usrId, int orgId);
}
从日志中查询,
Executing SQL statement [select * from appt where usr_id = :usrId and org_id = :orgId and start_time BETWEEN :stDate and :endDate]
项目表中的数据,
邮递员请求,
http://localhost:9090/api/v1/service/appt/usr/2?stDate=2021-01-24 03:20&endDate=2021-03-25 05:23
不确定这有什么问题。它不会返回记录。
以下代码有效。答案是从上面的帖子修改的。
return secContext.retrieveUser()
.flatMap(usr -> apptRepository.findApptsBetween(userId, usr.getOrgId(), stDate, endDate).collectList()
.flatMap(appts -> ServerResponse.ok().contentType(APPLICATION_JSON).bodyValue(appts)));
这里的问题是,反应性代码需要被重新编译,才能开始执行。以下语句仅描述应发生的情况:
<代码>通量
要初始化执行,需要添加。subscribe()
操作员响应调用。但这里您不希望这样,因为这将在不同的上下文/线程中开始执行,并且您无法将值返回给外部方法。这就是为什么应该将反应性代码编写为反应性调用链的原因。(注意:控制器方法和路由器函数在代码末尾有一个隐式的.subscribe()
,因此不需要添加它)
您可以将此代码重新连接到如下内容:
return secContext.retrieveUser().flatMap(usr ->
projectRepository.findApptsBetween(stDate, endDate, userId, usr.getOrgId())
.collectList()
.map(appts -> ServerResponse.ok().contentType(APPLICATION_JSON).body(appts, Project.class));
我尝试创建一些基于反应式堆栈(反应器WebFlux)的基本Spring 5应用程序。 我的下一个目标是实现能够: 保存书籍。 查找所有图书。 我的存储库需要涵盖以下场景: 方案 A: 没有人订阅FindAll 有人保存了一本书(id=1) Client1订阅FindAll 书籍(id=1)被推送到Client1(Client1保持订阅状态,流未完成!) 有人保存了一本书(id=2) 书籍(id=2
我是Spring data neo4j的新手,我对GraphRepository有一些错误/问题。 我第一次有了这个: 但是阅读一些文档,存储库已经提供了这样的方法。我不需要写它们。 这是我的产品域名。 这是我的实验班 未检测到查找字节 Id 这正常吗? 这是我的pom.xml
这里已经提出并回答了类似的问题。解决方案是将日志记录级别从组织:: 我的情况的不同之处在于,我使用的是被动支持,上面的坏男孩不起作用。我还尝试将 中的所有内容都设置为 DEBUG,但仍然无法在日志中看到任何查询。 我想反应式存储库有一些特别的地方,我没有提到。任何想法都非常欢迎!
嗨,我有一个使用Spring 5、Spring Data、Spring AOP和Java 11的应用程序(我也在使用JAVA 9模块系统)。我的spring-context/spring-aspects版本是5.1.2.RELEASE Spring数据版本是2.1.2.RELEASE这两个版本都是最新的。我以下列方式创建了存储库: 我已启用Spring Data Repositories使用 在我
当我启动应用程序时,我得到了错误我的Pom有以下依赖项,我使用的是 下面是我的存储库接口。 当我启动应用程序时,它会抛出错误: 可以有人请建议如果JPA不支持,然后我应该使用什么,任何帮助都是感激的…
我第一次使用SpringData反应式存储库。 我已经过了官方的留档,我创建了一个基本的CRUD API来使用它们。 我从H2开始,只是为了简单起见,一切都按预期进行。 当我尝试创建新实体时,一切正常: 代码非常简单(与SpringData Repositories一样): 和控制器: DTO也非常简单: 然后我在文档中检查Oracle也受支持。 我查看了Oracle驱动程序的官方文档。 确实,该