带有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。
发布于 2021-05-03 05:21:38
r2dbc不是对象关系映射(即没有对象关系映射器),因此不支持面向对象的孔主题。在纯SQL的基础上,没有开箱即用的继承,但是您需要自己构建表示继承的表(但从技术上讲,它们只是表)。
经典方法:表映射策略
在出现r2dbc和spring reactive堆栈的对象关系映射之前,您需要自己实现到表的继承映射,以及根据您的映射策略连接表的存储库。最常见的策略(每种策略都有优缺点)是:
在谷歌或this answer上可以找到更多详细信息。
替代方案:无模式
另一种方法可能是将普通列用于公共属性,并将无模式的列用于子类的数据。例如,当使用postgres时,它对JSONB类型有很好的支持,您可以使用它来轻松地实现存储库,而无需大量的连接等。
https://stackoverflow.com/questions/62185317
复制相似问题