[英]Spring Data JDBC invert OneToMany navigation
我有一个现有的数据方案,我不愿意改变。 有两个实体/表: parent
和child
, child 具有外键列parent_id
。 这是一个 1(parent) 到 n(children) 的关系。
Spring Data JDBC 中是否有可能让Child
类引用Parent
而不是Parent
有Set<Child>
属性? 也许两者都有? (我知道使用 hibernate 是可能的,但我想继续使用 JDBC)。
即我想要这样的东西:
@Data
public class Parent {
@Id
private Long id;
}
@Data
public class Child {
@Id
private Long id;
private Parent parent;
}
Spring Data JDBC 不直接支持从Child
到Parent
的引用。 如果您将Parent
和Child
建模为一个聚合,即使用直接引用,则Parent
必须是聚合根。 因此,任何孩子始终只能通过Parent
访问。 因此,反向引用应该是多余的。
实际上,希望有一个反向引用可能表明这两者并没有真正形成一个单一的聚合,而是单独的聚合,并且应该这样建模。 见https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates
但是如果你真的想要你的反向引用,你可以很容易地在AfterLoadCallback
建立它。 为此,使用@Transient
注释标记反向引用,以便它不会实际存储在数据库中。 然后在AfterLoadCallback
将被触发一次为每个Parent
从导航Parent
到每个Child
,并设置反向引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.