问题标签 [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.
spring-webflux - 使用 R2DBC 的动机是什么?
我对反应式弹簧堆栈非常陌生,目前正在探索R2DBC
。
你能解释一下在 / 中使用过度包装阻塞有什么好处R2dbcRepository
吗?JpaRepository
Mono
Flux
让我举一些例子:
对比
执行上有什么概念上的区别吗?
java - Spring + R2DBC:如何关闭 DatabaseClient 和 TransactionalOperator?
我可以使用以下方法在我的 Spring Boot 应用程序中创建 DatabaseClient 和 TransactionalOperator:
但是如何关闭 DatabaseClient 和 TransactionalOperator 并释放连接/资源?
这是在 Spring Boot 应用程序中为 R2DBC 创建数据库连接的最佳方式吗?
r2dbc - 查询注释的可分页用法
我可以在带有 @Query 注释的 Spring Data R2dbc 存储库中使用 Pageable 属性吗?例如;
它给出了“org.springframework.data.repository.query.ParameterOutOfBoundsException:无效的参数索引!您似乎声明的查询方法参数太少了!”
有什么方法可以在 Spring Data R2dbc 存储库中使用分页吗?
谢谢。
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 和运行子查询。这样,初始响应流被消耗并且连接可以自由地获取额外的结果。
类似以下代码段的内容应该可以完成这项工作:
但这消除了流式传输数据而不将其全部保存在内存中的好处(我的最后一步不是列出,而是流式写入以输出到某个文件)。
对此有任何帮助吗?
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,但不知道为什么我卡在这里,我确定这是一个依赖问题。请帮我解决这个问题。
spring - Spring Data R2DBC - 在反应式存储库中构建自定义 postgresql 查询
我有一个表,其中包含具有字符串 id、字符串 jobId 和字符串状态的实体。给定一个 jobId 和一个 ID 列表,我想查询该表并返回数据库中不存在的 ID 通量。
如果我在 pgadmin 中手动执行以下查询,我可以成功地做到这一点:
响应仅返回不存在的 id,“abc”和“fdjk”。
在我的 spring 数据仓库中,我定义了以下方法:
问题是,当我运行代码时,查询扩展为:
这总是返回一个值,因为这些值被分组到一组括号中,而不是将我的集合中的每个元素包装在括号中。只是好奇是否有办法正确处理这个问题。
编辑实体类是:
另外,我的回购是:
R2dbcRepository 目前不支持更成熟的 spring 数据仓库的神奇魔力,所以你不能做类似的事情findByJobId
,让它为你自动生成查询。
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:
- https://r2dbc.io/2019/05/13/r2dbc-0-8-milestone-8-released
- https://r2dbc.io/2019/10/07/r2dbc-0-8-rc2-released
但是更新到最新版本后出现了一个新问题,即需要一个事务来运行查询,如下所示:
更新配置:
询问:
免责声明这并不意味着在生产中使用!!仍然在GA之前。
spring-data - 如何与 Spring Data R2DBC 映射 1:1 关系?
我有这些简化的表格
以及这些简化的 Kotlin 类:
当我使用@Column(address_fk)
该属性时,address
我得到一个ConverterNotFoundException
没有找到转换器的String
结果Address
。也@MappedCollection
而@Column
不是看起来不合适。任何提示表示赞赏。
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 依赖项。
java - spring data r2dbc 可以生成模式吗?
我正在使用 R2DBC 和 H2 创建一个快速项目,以使自己熟悉这种新的反应性东西。制作了一个扩展 ReactiveCrudRepository 的存储库,一切都很好,只要我使用 DatabaseClient 发出一个与我的实体匹配的 CREATE TABLE 语句...
我了解 Spring Data R2DBC 的功能不如 Spring Data JPA(还没有?),但目前有没有办法从实体类生成模式?
谢谢