繁体   English   中英

Spring Data JDBC 反转 OneToMany 导航

[英]Spring Data JDBC invert OneToMany navigation

我有一个现有的数据方案,我不愿意改变。 有两个实体/表: parentchild , child 具有外键列parent_id 这是一个 1(parent) 到 n(children) 的关系。

Spring Data JDBC 中是否有可能让Child类引用Parent而不是ParentSet<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 invert OneToOne navigation

Spring Data JDBC 不直接支持从ChildParent的引用。 如果您将ParentChild建模为一个聚合,即使用直接引用,则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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM