问题标签 [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.
multi-tenant - 使用 r2dbc 的基于多租户模式的应用程序
我正在开发一个使用 Spring-Webflux + Spring-data-r2dbc 和 r2dbc 驱动程序连接到 Postgresql 数据库的多租户反应式应用程序。多租户部分是基于模式的:每个租户一个模式。因此,根据上下文(例如用户登录),请求将命中数据库的某个模式。
我正在为如何在 r2dbc 中实现这一点而苦苦挣扎。理想情况下,这将是 Hibernate 使用MultiTenantConnectionProvider的方式(参见示例 16.3)。
我发现了什么以及到目前为止我做了什么:
- 可以使用这里提到的AbstractRoutingConnectionFactory。但我被迫按租户/模式创建一个 ConnectionFactory。在我看来,这远非高效/可扩展,我宁愿使用像r2dbc-pool这样的连接池
我看着PostgresqlConnectionFactory。这里有趣的是 on
/li>prepareConnection
有一个电话setSchema(connection)
:
可能我需要找到一种方法来覆盖它以便从上下文而不是配置中动态获取架构?
否则我可以尝试将请求中的模式指定为表前缀:
/li>
但是我不能再使用 SpringData 或者我需要覆盖每个请求以将租户作为参数传递。
任何提示/帮助表示赞赏:)
java - Spring Data R2DBC如何查询分层数据
我是反应式编程的新手。我必须开发一个简单的 Spring Boot 应用程序来返回一个 json 响应,其中包含公司详细信息及其所有子公司和员工
创建了一个 Spring Boot 应用程序(Spring Webflux + Spring data r2dbc)
使用以下数据库表来表示公司与子公司和员工的关系(它是与公司和子公司的层级关系,其中一个公司可以有 N 个子公司,每个子公司可以有另外 N 个子公司等等等等)
公司
- ID
- 姓名
- 地址
公司_子公司
- ID
- sub_company_id(上面公司表的外键引用id)
员工
- ID
- 姓名
- 指定
- company_id(上述公司表的外键引用id)
以下是表示上述表格的 java 模型类
公司.java
雇员.java
创建了以下存储库
在 Company_SubCompany 表中,超级公司用 id -1 表示。所以使用这个 id 我们现在可以得到 super parent company 。
使用以下服务代码,我现在能够获得第一级公司及其员工。但我不确定如何获取所有嵌套的子公司并添加到其中
我对反应式、函数式编程和 r2dbc 非常陌生,所以请帮助我解决我的问题。如果有任何其他更好的方法可用,也将使用该方法。要求是获得公司、其所有员工和子公司(最多 N 个休假)。
spring - Spring Data R2DBC中如何设置多个数据源
我在我的新项目中使用spring data r2dbc,需要连接多个数据源,如A数据源和B数据源。有没有办法使用 r2dbc 连接多个数据源?如果有办法,我可以得到一个例子或文件吗?
我的堆栈如下:
- Spring Boot 2.3.0.M4
- Spring WebFlux
- Spring Data R2DBC
java - 使用 @Query 更新不更新 ReactiveCrudRepository 中的数据
我正在将 ReactiveCrudRepository 与 Spring Web Flux 一起使用。以下查询未使用 r2dbc 更新 Postgres 数据库中的数据。我最初也尝试不使用@Modifying。我参考了这个链接使用了这个注释
postgresql - Spring Data R2dbc中处理表之间关系的最佳实践
我尝试在 RDBMS 中创建用户/角色关系,并希望使用 R2dbc(Spring Data R2dbc) 与后端数据库握手。
假设有三个表,users、roles 和 user_roles。
与 JPA 不同,R2dbc 重用 spring-data-relational-common(也用于 Spring Data Jdbc)来注释表,但没有解决关系的工具,例如roles
这里。
postgresql - R2DBC spring postgres枚举映射
我是 spring r2dbc 的新手。以前我有用户休眠。在休眠中,当您需要将 postgresql 枚举映射到 java 枚举时,您只需添加com.vladmihalcea:hibernate-types-52
和使用@Enumerated
(如下所示)。与R2DBC 和枚举(PostgreSQL)相关的SO 问题我必须为每个枚举创建编解码器。是否有可能通过某种标签或其他通用解决方案来实现这一目标,而不仅仅是创建多个编解码器。
java - 忽略 spring-r2dbc 中的更新字段
我正在使用 spring r2dbc 和 ReactiveCrudRepository,我有一个字段在生成更新查询时需要忽略
如何在更新查询中忽略 companyName。我可以使用@column 在插入查询中忽略它,但它不适用于更新
java - 使用 Spring Reactive (R2DBC) 连接 MSSQL
我目前正在尝试与 Microsoft SQL Server 建立数据库连接。不幸的是,我不明白为什么它不起作用。不幸的是,错误消息不能给我准确的信息。看起来我的代码甚至没有尝试连接到数据库。
我的开胃菜:
}
数据库配置:
我的数据库初始化器:
人.Java:
包 com.example.domain;
导入 org.springframework.data.annotation.Id;导入 org.springframework.data.relational.core.mapping.Table;
@Table("person") 公共类人 {
和 getter/setter
我的人存储库
我的控制器:
我的绒球:
错误信息:
java - R2dbc 不能使用 tcp 处理 h2 数据库
我尝试使用 docker 容器 oscarfonts/h2 将 h2 与 r2dbc 一起使用。默认情况下,使用这个容器时,我们必须使用 tcp 协议,
当我尝试将它与 r2dbc 一起使用时。我收到以下明确的错误消息:
由于类 java.lang.IllegalArgumentException 重试获取数据库连接:不支持协议选项 tcp(文件、内存)
文档 r2dbc h2 说它应该与 tcp 协议一起使用。可以?
相应地使用 spring boot 2.3.0.RELEASE 和 r2dbc 版本。
spring-data-r2dbc - R2DBC - MssqlNonTransientException 导致 onErrorDropped
我在反应性世界中很新鲜,最近遇到了很奇怪的问题,上下文:
- 在 MS SQL 上使用带有 R2DBC 的 spring 数据
- 在 SB 2.3、OpenJDK 14 上运行(以下依赖项)
- 通过注释使用事务性
- 使用纯粹基于
DatabaseClient
(下面的代码示例)构建的“存储库”
并在尝试执行时:
- 从 中删除
master.abc.DEF
,然后 - 一个无效的,故意插入我得到以下异常:
因此 - 事务没有回滚并且基础表被锁定:/
流程(简化)是:
以某种方式添加Hooks.onErrorDropped(error -> ...
可以解决问题,但这似乎不是一个合适的解决方案,我仍然想知道实际的根本原因是什么 - 我假设我的代码/方法而不是 r2dbc。
pom片段
存储库方法(概念):