2

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

在 Spring Data JDBC 中是否可以有Child类引用但Parent没有属性?也许两者兼而有之?(我知道休眠是可能的,但我想继续使用 JDBC)。ParentSet<Child>

即我想要这样的东西:

@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

4

1 回答 1

2

Spring Data JDBC 不提供对 from Childto的引用的直接支持Parent。如果您正在建模Parent并且Child作为一个聚合,即直接引用,Parent则必须是聚合根。Parent因此,任何孩子始终只能通过 访问。因此,反向引用应该是多余的。

实际上,希望有一个反向引用可能表明两者并没有真正形成一个单一的聚合,而是单独的聚合,应该这样建模。见https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates

但是如果你真的想要你的反向引用,你可以很容易地AfterLoadCallback. 为此,请使用@Transient注释标记反向引用,以便它不会实际存储在数据库中。然后在which 中,每次从到导航AfterLoadCallback都会触发一次并设置反向引用。ParentParentChild

于 2019-11-29T20:49:07.480 回答