问题标签 [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 回答
737 浏览

java - Spring R2DBC:如果 id 为零,则保存新实体

我正在从传统的 JPA 代码库迁移并面临一个问题,即无法通过将 id 设置为零来保存新实体。

这是我的架构(PostreSQL):

在 JPA 中,我可以将 id 设置为0,它将被视为一个新实体。将自动分配一个新的 ID。然而在 R2DBC 中,新实体总是以 id = 0 保存,这是不可能的。

我知道,我可以使用IntegerorLong并设置它们null,但我正在使用 Kotlin 并希望使其id不可为空。否则我必须做大量不必要的空检查。

0 投票
1 回答
3166 浏览

spring-boot - 无法使用弹簧启动对 r2dbc 运行测试

我正在关注链接以使用弹簧数据实现 R2DBC。该项目具有巨大的 POM,因为它还演示了其他功能。因此,我尝试仅使用 Spring Boot 和带有 H2 的 R2DBC 所需的依赖项。

我的pom是:

然后我将存储库定义为:

特征是实体类。

我在 src/test/resources 的 application.properties 中配置了 h2:

在测试中:

但是当我尝试运行测试时,我会得到巨大的日志,其中列出了“正匹配”和“负匹配”,最后:

与示例项目相比,我缺少什么?

0 投票
1 回答
1348 浏览

spring-boot - R2DBC 无法使用 h2 协议创建连接

我正在尝试利用 H2 进行测试,并在以下配置src/test/resources/application.yaml

我有一个带有注释的空测试,@SpringBootTest但是当我运行它时,我收到以下错误:

以下是来自的相关依赖项pom.xml

0 投票
0 回答
369 浏览

spring-boot - 无法运行 SQL 脚本来初始化 Spring Boot 测试的测试数据

我有一个带有 webflux 和 r2dbc 的 Spring Boot 2.3 反应式应用程序。通常它在 MS Sql 数据库上运行。我希望单元测试在 H2 上运行。当根据正在使用的 application.properties 文件(主文件或测试文件)加载正确的数据库驱动程序时,我明白了这一点。但我不知道如何运行 SQL 脚本来创建模式和加载数据。

尝试以下但未成功:

  1. schema-XXX.sql、data-XXX.sql,它们与非反应式 JPA 一起工作得很好。

  2. @Sql 注解引用资源目录中的 *.sql 文件。

  3. ConnectionFactoryInitializer bean 与应用程序配置文件位于同一包中,但位于测试源树下。@Configuration 和 @Bean 使用正确,但是 bean 没有实例化。也许这就是问题所在?

日志中没有任何内容表明执行 *.sql 文件的尝试甚至失败。

谢谢你。

0 投票
2 回答
835 浏览

spring-boot - R2DBC 存储库如何与 Postgis 几何图形一起使用?

我有几个与 Spring Data JPA 一起使用的实体类。(这些实体类位于安装了 postgis 并包含几何字段的 postgres 数据库中。)

但是,当我切换到 r2dbc 时,它不起作用。任何指针将不胜感激。

错误原因:java.lang.IllegalStateException:找不到类 org.locationtech.jts.geom.Geometry 所需的标识符属性!

0 投票
1 回答
2157 浏览

java - 如何在 Spring Data R2DBC 中将一对多/一对一映射到 POJO

我正在尝试在新的响应式 Data r2dbc 中复制我在 Spring Data JPA 中使用的一些功能。我知道 r2dbc 不是一个成熟的 ORM,但想了解在 r2dbc 中复制以下场景的最佳方法是什么:

如果我使用 Spring Data JPA ,对 DoctorRepository(扩展 JpaRepository)的简单 findById 调用将为我doctor提供包含表中语言doctor_language列表和表中健康提供者列表的对象health_provider

我正在阅读有关预测的内容,但似乎无法找出在 Reactive Spring 中实现上述内容的最佳方法。任何帮助/指南/方向表示赞赏。

谢谢

0 投票
1 回答
489 浏览

java - 如何连接到 postgres 并使用 r2dbc 执行查询

我正在尝试编写一个简单的函数来连接postgres并执行一个 select 语句。

上面的代码没有打印任何东西。也没有错误。我可以使用相同的凭据连接到数据库。从数据库流式传输数据的代码中缺少什么?

0 投票
1 回答
716 浏览

spring-data-r2dbc - Difference between io.r2dbc.pool.PoolingConnectionFactoryProvider.MAX_SIZE vs ConnectionPoolConfiguration max size in r2dbc

I am trying to understand the difference between 2 configurable parameters while creating a connection pool using r2dbc-pool.

I was able to configure the connection pool with the help of the below post: Connection pool size with postgres r2dbc-pool

But wanted to understand the difference while configuring max size and initial size while creating

ConnectionFactory connectionFactory = ConnectionFactories.get(ConnectionFactoryOptions.builder() .option(DRIVER, "pool") .option(PROTOCOL, "postgresql") .option(HOST, host) .option(USER, user) .option(PASSWORD, password) .option(MAX_SIZE, 30) .option(INITIAL_SIZE, 10) .option(DATABASE, database) .build());

ConnectionPoolConfiguration configuration = ConnectionPoolConfiguration.builder(connectionFactory) .maxIdleTime(Duration.ofMinutes(30)) .initialSize(initialSize) .maxSize(maxSize) .initialSize(20) .maxCreateConnectionTime(Duration.ofSeconds(1)) .build();

0 投票
2 回答
3968 浏览

spring - 如何在 r2dbc 中批量执行多个插入?

我需要将多行一次插入一个表中。在 DatabaseClient 中,我找到了 insert() 语句和 using(Publisher objectToInsert) 方法,该方法具有多个对象作为参数。但它会在一批中插入它们吗?另一种可能的解决方案是connection.createBatch(),但它有一个缺点:我不能在那里传递我的实体对象,也不能从实体生成sql查询。

那么,是否可以在 r2dbc 中创建批量插入?

0 投票
2 回答
3715 浏览

spring-boot - R2DBC 和 liquibase

所以开始一个新项目,我想使用 r2dbc 和 webflux,一直在研究有什么支持来处理数据库迁移。我在这里能找到的最后一个答案是从 2019 年 7 月开始,liquibase 不支持 R2DBC,在谷歌搜索之后,情况似乎仍然如此。

梦想是r2dbc-h2在本地开发时使用,然后在生产过程中使用类似 postgres 的东西。Liquibase 将在本地和生产中管理表结构。

一直在尝试用谷歌搜索一下这种设置的外观,但那里的信息很少。

我一直在考虑使用 设置表格liquibase-maven-plugin,但我不知道这是否适用于r2dbc-h2.

所以几个问题:

  • 如何设置以便 liquibase 在迁移期间使用常规驱动程序,而应用程序的其余部分使用反应式驱动程序?
  • 如果使用 maven 插件,这可以与 H2 一起使用还是我需要 postgres 作为 docker?

这对我来说是一个非常黑洞,有任何信息吗?