override fun getCredentialsById(id: Long): Mono<UserCredentialsModel> {
return Mono.from {
dsl.select(
USER_CREDENTIALS.ID,
USER_CREDENTIALS.EMAIL,
USER_CREDENTIALS.PHONE,
USER_CREDENTIALS.LOGIN,
USER_CREDENTIALS.PASSWORD)
.from(USER_CREDENTIALS)
.where(USER_CREDENTIALS.ID.eq(id))
.and(USER_CREDENTIALS.IS_ACTIVE.eq(true))
.fetchInto(UserCredentialsModel::class.java)
}
}
@Bean
fun createContext(): DSLContext {
return DSL.using(connection)
}
org.jooq.exception.DetachedException: Attempt to execute a blocking method (e.g. Query.execute() or ResultQuery.fetch()) when only an R2BDC ConnectionFactory was configured
然后,我应该如何以反应式的方式将查询结果提取到Kotlin数据类(或Java Jooq的POJO)中?
当反应性地使用jOOQ时,您永远不应该调用任何阻塞方法,例如ResultQuery.FetchoneInto(Class)
。该方法只是resultquery.fetchone()
和record.into(Class)
的方便方法。没有什么可以阻止您自己调用record.into(Class)
,无论是在阻塞世界还是在非阻塞世界。
因此,使用通常的反应器库方法来映射流内容:
mono.map { r -> r.into(UserCredentialsModel::class.java) }
或者,在一个完整的示例中:
return Mono.from {
dsl.select(
USER_CREDENTIALS.ID,
USER_CREDENTIALS.EMAIL,
USER_CREDENTIALS.PHONE,
USER_CREDENTIALS.LOGIN,
USER_CREDENTIALS.PASSWORD)
.from(USER_CREDENTIALS)
.where(USER_CREDENTIALS.ID.eq(id))
.and(USER_CREDENTIALS.IS_ACTIVE.eq(true))
} .map { r -> r.into(UserCredentialsModel::class.java) }
可以在pom文件中使用r2dbc驱动程序生成jooq类吗。e、 g在下面的示例中,替换jdbc标记并使用r2dbc。我正在使用jooq和r2dbc,我也想在中包括jdbc。
目前,我已经使用spring boot hikari连接池编写了我的项目,并使用fetchAsync方法获取结果。但根据这篇文档,反应式抓取阻止了JDBC API。 有没有可能用flux封装fetchAsync方法的CompletionStage对象并使其成为反应性的? 是否有通过连接池支持r2dbc的计划,以及时间表(如果正在进行)
有人知道为什么吗?我该怎么解决?
我正在开发一个多租户反应式应用程序,使用带有r2dbc驱动程序的Spring-Webflow Spring-data-r2dbc连接到Postgresql数据库。多租户部分是基于模式的:每个租户一个模式。因此,根据上下文(例如登录的用户),请求将访问数据库的特定模式。 我正在努力研究如何在r2dbc中实现这一点。理想情况下,这将是Hibernate处理MultiTenantConnectionPr
由于R2DBC是反应式和非阻塞的,我想了解在简单的RESTful CRUD服务中使用R2DBC的好处 假设Spring Boot应用程序正在使用下面的存储库公开RESTful服务 从服务调用此存储库,结果需要在服务中进行转换,然后才能返回控制器。 为了访问完整的客户列表,我需要在通量上调用,这使得它阻塞并违背了使用反应组件的目的 这是否意味着在这个简单的示例中使用R2DBC没有任何好处?我错过什么
我第一次使用SpringData反应式存储库。 我已经过了官方的留档,我创建了一个基本的CRUD API来使用它们。 我从H2开始,只是为了简单起见,一切都按预期进行。 当我尝试创建新实体时,一切正常: 代码非常简单(与SpringData Repositories一样): 和控制器: DTO也非常简单: 然后我在文档中检查Oracle也受支持。 我查看了Oracle驱动程序的官方文档。 确实,该