当前位置: 首页 > 知识库问答 >
问题:

Spring数据r2dbc-实体继承

公冶高义
2023-03-14

带有Hibernate的Spring数据JPA支持注释javax.persistence.继承内的常量javax.persistence.InelianceType。基于这些,实体类之间的继承映射到DB(单表/联接表https://stackoverflow.com/a/3579462/12053054)。

我找不到任何类似的机制来支持Spring data r2dbc的实体继承。我知道JPA和Hibernate的东西与r2dbc无关,但我认为在Spring data r2dbc存储库中支持继承没有任何问题,也没有任何针对函数式编程的“反模式”。

是否有任何解决方法或任何机制可以让我在spring数据r2dbc存储库中使用继承?(不仅继承字段,还将继承转换为DB,就像调用spring数据JPA存储库方法时JPA/Hibernate所做的那样)。我唯一的临时解决方法是手动执行查询并自己实现spring数据r2dbc存储库方法,这样我就可以将继承转换为DB。

共有1个答案

钦侯林
2023-03-14

R2DBC不是ORM(即没有OBJECT关系映射器),因此不支持面向对象的孔主题。在纯粹的SQL基础上,没有开箱即用的继承,但您需要自己构建表示继承的表(但从技术上讲,它们只是表)。

在r2dbc的ORM和springReactor栈出现之前,您需要自己实现表的继承映射,以及根据映射策略连接表的存储库。最常见的策略(各有利弊)是:

  • 单个表(将所有列合并到单个表中)
  • 混凝土表(重复每个混凝土表的所有公共列)
  • 每种类型的表(有一个包含公共列的表,然后每个混凝土类有一个仅包含其添加列的表)

请在谷歌上查找更多详细信息,或在此答案中查找示例。

另一种方法可能是对公共属性使用普通列,对子类的数据使用无模式列。例如,当使用postgres时,它对JSONB类型有很好的支持,您可以使用它轻松地实现存储库,而无需大量的连接等。

 类似资料:
  • 我正在使用DatabaseClient执行sql查询,我不知道如何通过以下方式进行分组:

  • 我有spring boot项目(版本< code>2.4.6),带有spring数据依赖项(< code > spring-boot-starter-data-JPA )和postgreSQL驱动程序。 在项目中,我们使用Hibernate和数据存储库,通过以下方式配置: 我还想加入反应性R2DBC。我的计划是在一个特定的地方使用它,在那里我们与其他系统集成,这样的通信通过反应式数据流进行。根据它

  • 我正在尝试迁移到Spring Data R2DBC,我找不到对Amazon Redshift数据库的支持,如果有支持,有人可以帮助我吗? 下面是spring文档url,它支持的数据库很少,但红移不在列表中。https://spring.io/projects/spring-data-r2dbc

  • 我是反应式编程的新手。我必须开发一个简单的Spring启动应用程序来返回一个json响应,其中包含公司及其所有子公司和员工的详细信息 创建了一个Spring Boot应用程序(Spring Webflow Spring data r2dbc) 使用以下数据库表来表示公司和子公司以及员工关系(这是一种与公司和子公司的层次关系,其中一个公司可以有N个子公司,而这些子公司中的每个子公司可以有另N个子公司

  • 我有一个简单的问题,是否可以为MySQL或其他数据库使用spring-boot数据r2dbc自动生成表?在JPA中,我添加了spring.JPA.hhibernate。ddl-auto=更新并创建表 这是我的pom:

  • 我有一个问题,Spring数据没有保存实体。应用程序逻辑如下: 另一个应用程序正在监听负载相当重的Kafka主题(每秒数十条消息)并将消息插入数据库中具有“NEW”状态的表中。 @调度方法加载一个具有“NEW”状态的实体列表,这些实体被一个接一个地传输到FixedThreadPool(20个线程),它们的状态设置为“PROCESSING”和一个saveAll方法调用同一个表。 这两种日志方法都显示