Spring Data JDBC反转OneToMany导航

问题描述 投票:1回答:1

我有一个不愿更改的现有数据方案。有两个实体/表:parentchild,其子代具有外键列parent_id。这是1(父母)与n(孩子)的关系。

在Spring Data JDBC中是否有Child类引用Parent而不是Parent具有Set<Child>属性?也许两者都有? (我知道休眠可以实现,但是我想保留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

java spring-data mapping one-to-many spring-data-jdbc
1个回答
0
投票

Spring Data JDBC不直接支持从ChildParent的引用。如果将ParentChild建模为一个聚合,即具有直接引用,则Parent必须是聚合根。因此,任何孩子始终只能通过Parent访问。因此,反向引用应该是多余的。

实际上,希望有一个反向引用,这可能表明这两者并不是真正形成一个单一的集合,而是分开的集合,因此应进行建模。参见https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates

但是,如果您确实想要自己的回溯参考,则可以轻松地establish that in an AfterLoadCallback。为此,使用AfterLoadCallback标记反向引用,因此实际上不会将其存储在数据库中。然后在将为每个@Transient annotation触发一次的@Transient中,从AfterLoadCallback导航到每个Parent并设置反向参考。

© www.soinside.com 2019 - 2024. All rights reserved.