问题标签 [spring-data-r2dbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
874 浏览

spring-webflux - 使用 R2DBC 的动机是什么?

我对反应式弹簧堆栈非常陌生,目前正在探索R2DBC

你能解释一下在 / 中使用过度包装阻塞有什么好处R2dbcRepository吗?JpaRepositoryMonoFlux

让我举一些例子:

对比

执行上有什么概念上的区别吗?

0 投票
1 回答
1041 浏览

java - Spring + R2DBC:如何关闭 DatabaseClient 和 TransactionalOperator?

我可以使用以下方法在我的 Spring Boot 应用程序中创建 DatabaseClient 和 TransactionalOperator:

但是如何关闭 DatabaseClient 和 TransactionalOperator 并释放连接/资源?

这是在 Spring Boot 应用程序中为 R2DBC 创建数据库连接的最佳方式吗?

0 投票
1 回答
417 浏览

r2dbc - 查询注释的可分页用法

我可以在带有 @Query 注释的 Spring Data R2dbc 存储库中使用 Pageable 属性吗?例如;

它给出了“org.springframework.data.repository.query.ParameterOutOfBoundsException:无效的参数索引!您似乎声明的查询方法参数太少了!”

有什么方法可以在 Spring Data R2dbc 存储库中使用分页吗?

谢谢。

0 投票
0 回答
356 浏览

spring-data - Spring Data R2DBC - 没有考虑背压?

该线程是 Github 问题的延续:https ://github.com/spring-projects/spring-data-r2dbc/issues/194

语境:

你好,

我刚刚尝试了一个非常简单的示例,它基于两个反应式存储库:

给定 br一个 r2dbc crud repo 和cr另一个 r2dbc crud repo:

此代码示例永远不会完成(只有前 250 个左右的条目到达.collectList操作员)。经过一番挖掘,在 之后添加一些onBackpressureXXX运算符findAll似乎可以通过...删除元素或缓冲它们来“解决”问题。

在这一点上,我的理解是 r2dbc 反应式存储库不使用消费者反馈机制,这消除了 r2dbc 的大部分好处。

我错了吗 ?有没有更好的方法来实现相同的目标?

谢谢 !


来自@mp911de 的建议:

作为一般规则,避免在另一个流处于活动状态时创建流(著名引用:不要跨越流)。

如果您想获取相关数据,那么理想情况下将所有结果收集为 List 和运行子查询。这样,初始响应流被消耗并且连接可以自由地获取额外的结果。

类似以下代码段的内容应该可以完成这项工作:


但这消除了流式传输数据而不将其全部保存在内存中的好处(我的最后一步不是列出,而是流式写入以输出到某个文件)。

对此有任何帮助吗?

0 投票
1 回答
1977 浏览

spring - @enabler2dbcrepositories 无法找到我的存储库

我正在将我的数据库管理从阻塞迁移到非阻塞(异步)api spring data r2dbc。但是我需要解决一些问题吗?

这是我尝试过的: 1.更改 R2DBC 和其他反应堆的依赖项。2.更改了该项目的springboot版本,您可以在我以前的项目中查看下面的pom.xml(但由于一些损坏的类,我已经删除了该项目)这很好用,但现在它不起作用。3. 多次更改 springframework 版本,我知道 R2DBC 仅适用于 5.2.0.RC2,但不知道它仍然无法正常工作。4.run maven clean install 但没什么大不了的。下面是我的代码。

这是我的 pom.xml:

现在这里是我的 springbootapplication 主类

我使用我的 ReactiveCrudRepository(resultrepo1) 的类

我的结果repo1

这是我的整个过程。我第二次使用spring r2dbc,但不知道为什么我卡在这里,我确定这是一个依赖问题。我也在我的 github 帐户上发布了这个,但它仍然开放等待回复。请帮我解决这个问题。

这是我在应用程序启动时遇到的错误:

我第二次使用spring r2dbc,但不知道为什么我卡在这里,我确定这是一个依赖问题。请帮我解决这个问题。

0 投票
1 回答
4198 浏览

spring - Spring Data R2DBC - 在反应式存储库中构建自定义 postgresql 查询

我有一个表,其中包含具有字符串 id、字符串 jobId 和字符串状态的实体。给定一个 jobId 和一个 ID 列表,我想查询该表并返回数据库中不存在的 ID 通量。

如果我在 pgadmin 中手动执行以下查询,我可以成功地做到这一点:

响应仅返回不存在的 id,“abc”和“fdjk”。

在我的 spring 数据仓库中,我定义了以下方法:

问题是,当我运行代码时,查询扩展为:

这总是返回一个值,因为这些值被分组到一组括号中,而不是将我的集合中的每个元素包装在括号中。只是好奇是否有办法正确处理这个问题。

编辑实体类是:

另外,我的回购是:

R2dbcRepository 目前不支持更成熟的 spring 数据仓库的神奇魔力,所以你不能做类似的事情findByJobId,让它为你自动生成查询。

0 投票
0 回答
1687 浏览

postgresql - Spring boot 数据 R2DBC 需要事务进行读取操作

我试图使用 Spring Boot Webflux 和 postgres R2DBC 驱动程序从数据库中获取对象列表,但我收到一条错误消息:

似乎所有 DatabaseClient 操作都需要包装到一个事务中。

我尝试了 spring-boot-data 和 r2db 之间依赖关系的不同组合,但并没有真正起作用。

版本:

依赖项:

Github 仓库:https ://github.com/odfsoft/spring-boot-guess-game/tree/r2dbc-issue

我希望读取操作不需要 @Transactional 或运行查询而不手动包装到事务上下文中。

更新: 在多次尝试多个版本后,我设法找到了一个有效的组合:

依赖项:

由于以下原因,r2dbc 的版本符号似乎从 1.0.0.M7 变为 0.8.x:

但是更新到最新版本后出现了一个新问题,即需要一个事务来运行查询,如下所示:

更新配置:

询问:

免责声明这并不意味着在生产中使用!!仍然在GA之前。

0 投票
1 回答
4205 浏览

spring-data - 如何与 Spring Data R2DBC 映射 1:1 关系?

我有这些简化的表格

以及这些简化的 Kotlin 类:

当我使用@Column(address_fk)该属性时,address我得到一个ConverterNotFoundException没有找到转换器的String结果Address。也@MappedCollection@Column不是看起来不合适。任何提示表示赞赏。

0 投票
1 回答
439 浏览

spring - 使用pring-data-r2dbc时如何解决spring TransactionSynchronizationManager.currentTransaction中的NoSuchMethodError

我正在编写基于 Spring webflux 的服务,它使用 r2dbc 从 PostgreSQL 读取数据。我需要使用最新版本的 r2dbc,但是在使用 TransactionSynchronizationManager spring-tx 5.2.0.RELEASE 库时出现 NoSuchMethodError 异常。

我基本上需要知道什么是正确的 spring-tx 库版本,才能与最新的 r2dbc-postgresql 和 r2dbc-spi 库正常工作的 spring-data-r2dbc 版本兼容。

这是我的 Maven 依赖项。

我正在使用接口扩展ReactiveCrudRepository接口来检索下面的表格数据。

我能够让这段代码与早期版本的 r2dbc-postgresql 和 r2dbc-spi 一起使用,但现在我遇到了以下异常。

java.lang.NoSuchMethodError: org.springframework.transaction.reactive.TransactionSynchronizationManager.currentTransaction()Lreactor/core/publisher/Mono;在 org.springframework.data.r2dbc.connectionfactory.ConnectionFactoryUtils.doGetConnection(ConnectionFactoryUtils.java:88) ~[spring-data-r2dbc-1.0.0.M2.jar:1.0.0.M2] 在 org.springframework.data。 r2dbc.connectionfactory.ConnectionFactoryUtils.getConnection(ConnectionFactoryUtils.java:70) ~[spring-data-r2dbc-1.0.0.M2.jar:1.0.0.M2] at org.springframework.data.r2dbc.core.DefaultDatabaseClient.getConnection (DefaultDatabaseClient.java:189) ~[spring-data-r2dbc-1.0.0.M2.jar:1.0.0.M2]

这些是代码使用的 r2dbc 依赖项。

0 投票
3 回答
5462 浏览

java - spring data r2dbc 可以生成模式吗?

我正在使用 R2DBC 和 H2 创建一个快速项目,以使自己熟悉这种新的反应性东西。制作了一个扩展 ReactiveCrudRepository 的存储库,一切都很好,只要我使用 DatabaseClient 发出一个与我的实体匹配的 CREATE TABLE 语句...

我了解 Spring Data R2DBC 的功能不如 Spring Data JPA(还没有?),但目前有没有办法从实体类生成模式?

谢谢