我有一个不愿更改的现有数据方案。有两个实体/表:parent
和child
,其子代具有外键列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不直接支持从Child
到Parent
的引用。如果将Parent
和Child
建模为一个聚合,即具有直接引用,则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
并设置反向参考。