问题标签 [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-boot - Spring数据R2DBC:org.springframework.data.mapping.PropertyReferenceException:没有找到类型的属性findAll
我正在尝试将ReactiveQuerydslPredicateExecutor与 R2dbcRepository 一起用于我的 spring-data-r2dbc 应用程序和 r2dbc-mssql 客户端版本 0.8.1.RELEASE
我将spring-boot版本从 2.2.7.RELEASE 升级到2.3.0.RELEASE,spring-data-r2dbc版本从 1.0.0.RELEASE 升级到1.1.0.RELEASE。我正在使用 4.3.1 版的 query-dsl 生成带有 apt-maven-plugin 的 Q-Classes。
进行这些更改后,当我运行我的应用程序时,我收到以下错误。我一直在尝试一整天,但找不到任何使它起作用的东西。有什么我想念的吗?
注意:如果我不进行上述更改并且不在我的存储库类中扩展 ReactiveQuerydslPredicateExecutor,则应用程序运行得非常好。
模型类
存储库
堆栈跟踪:
java - 忽略 spring-r2dbc 中的更新字段
我正在使用 spring r2dbc 和 ReactiveCrudRepository,我有一个字段在生成更新查询时需要忽略
如何在更新查询中忽略 companyName。我可以使用@column 在插入查询中忽略它,但它不适用于更新
spring-boot - 在 Spring Boot 中使用 Persistent Quartz Scheduler 同时使用 R2DBC
在 Spring Boot 中使用 R2DBC 时,我一直试图让 Quartz 工作。到目前为止,我还没有弄清楚如何做到这一点。这是因为在创建 JDBC 数据源时,它会尝试初始化我的 R2DBC 存储库,这是因为 R2DBC 本质上是反应式的,而 JDBC 本质上是阻塞的。
我考虑过的替代品
- 为 Quartz 使用内存数据库---这有 Quartz 不再持久化作业的问题。我可以通过使用 R2DBC 单独跟踪作业然后在启动时重新注册所有作业来解决这个问题,但这似乎我会复制很多 Quartz 的功能。
- 查找基于 R2DBC 的调度程序---没有。
相关 Gradle 依赖项
我当前的 Quartz 配置
相关 R2DBC 配置:
应用程序属性:
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 - 枚举类型的spring R2DBC查询
我的 PostgreSQL 包含一个像
在 Spring Boot 应用程序中,它表示为MyType.class enum
我正在尝试使用DatabasClient
作为一个错误,我得到:
将类型转换为my_type
不起作用(使用 CAST 和 ::)
我已经注册了一个适用的特定编解码器MyType.class
- 无条件查询所有适用于相关@ReadingConverter
spring-data-r2dbc - R2DBC - MssqlNonTransientException 导致 onErrorDropped
我在反应性世界中很新鲜,最近遇到了很奇怪的问题,上下文:
- 在 MS SQL 上使用带有 R2DBC 的 spring 数据
- 在 SB 2.3、OpenJDK 14 上运行(以下依赖项)
- 通过注释使用事务性
- 使用纯粹基于
DatabaseClient
(下面的代码示例)构建的“存储库”
并在尝试执行时:
- 从 中删除
master.abc.DEF
,然后 - 一个无效的,故意插入我得到以下异常:
因此 - 事务没有回滚并且基础表被锁定:/
流程(简化)是:
以某种方式添加Hooks.onErrorDropped(error -> ...
可以解决问题,但这似乎不是一个合适的解决方案,我仍然想知道实际的根本原因是什么 - 我假设我的代码/方法而不是 r2dbc。
pom片段
存储库方法(概念):
java - Spring Data r2dbc - 实体继承
Spring data JPA with Hibernate 支持javax.persistence.Inheritance
内部的注解和常量javax.persistence.InheritanceType
。基于这些,实体类之间的继承被映射到数据库中(单表/联表https://stackoverflow.com/a/3579462/12053054)。
我找不到任何类似的机制来支持使用 spring data r2dbc 进行实体继承。我知道 JPA 和 Hibernate 的东西与 r2dbc 无关,但我认为在 spring 数据 r2dbc 存储库中支持继承没有任何问题,也没有任何针对函数式编程的“反模式”。
是否有任何解决方法或任何机制可以让我在 spring data r2dbc 存储库中使用继承?(不仅继承字段,而且在调用 Spring Data JPA 存储库方法时将继承转换为与 JPA/Hibernate 相同的 DB)。我唯一的临时解决方法是手动执行查询并自己实现 spring data r2dbc 存储库方法,这样我也可以将继承转换为 DB。
java - Spring R2DBC:如果 id 为零,则保存新实体
我正在从传统的 JPA 代码库迁移并面临一个问题,即无法通过将 id 设置为零来保存新实体。
这是我的架构(PostreSQL):
在 JPA 中,我可以将 id 设置为0
,它将被视为一个新实体。将自动分配一个新的 ID。然而在 R2DBC 中,新实体总是以 id = 0 保存,这是不可能的。
我知道,我可以使用Integer
orLong
并设置它们null
,但我正在使用 Kotlin 并希望使其id
不可为空。否则我必须做大量不必要的空检查。
spring-data-jpa - 是否可以在单个 Spring Boot 应用程序中同时使用 Spring Data R2DBC 和 Spring Data JPA?
我有一个使用 Spring data JPA 和 hibernate envers 进行数据库审计的应用程序。由于 R2DBC 还不支持审计,是否可以在单个应用程序中结合使用两者?
如果是,计划使用 Spring Data JPA 进行插入、更新和删除操作,这样所有的 DB 审计都将由 hibernate 环境处理。并使用 R2DBC 进行反应式非阻塞 API 来读取数据。
如果没有,是否有关于如何同时实现反应式 API 和审计的建议?
spring-boot - R2DBC 无法使用 h2 协议创建连接
我正在尝试利用 H2 进行测试,并在以下配置src/test/resources/application.yaml
:
我有一个带有注释的空测试,@SpringBootTest
但是当我运行它时,我收到以下错误:
以下是来自的相关依赖项pom.xml
: