首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring Data r2dbc -实体继承

Spring Data r2dbc -实体继承
EN

Stack Overflow用户
提问于 2020-06-04 09:21:27
回答 1查看 409关注 0票数 0

带有Hibernate的Spring data JPA支持javax.persistence.InheritanceType内部的通知javax.persistence.Inheritance和常量。在此基础上,将实体类之间的继承映射到DB (single table/joined https://stackoverflow.com/a/3579462/12053054)中。

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

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

EN

回答 1

Stack Overflow用户

发布于 2021-05-03 05:21:38

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

经典方法:表映射策略

在出现r2dbc和spring reactive堆栈的对象关系映射之前,您需要自己实现到表的继承映射,以及根据您的映射策略连接表的存储库。最常见的策略(每种策略都有优缺点)是:

  • 单个表(将所有列合并到单个table)
  • Concrete表中(对每个具体表重复所有公共列)每个类型的
  • 表(有一个包含公共列的表,然后每个具体类有一个表,其中只包含添加的列)

在谷歌或this answer上可以找到更多详细信息。

替代方案:无模式

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62185317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档