JPA:单向 one-to-many 与复合 semi-shared 主键的关系,无连接 table

JPA: Unidirectional one-to-many relationship with composite semi-shared primary key without join table

JPA:

如何在 JPA 中对以下内容建模:

有什么想法吗?

我自己想出了如何做到这一点。

  • 您需要用

    注释拥有实体中的外键
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "myId", referencedColumnName = "parentId")
    private List<ChildEntity> childEntity;
    
  • 子实体中的主键部分也是引用拥有实体的外键,不得注释为外键,例如:

    @Id
    private String parentId;
    
  • 关于复合主键的通常规则适用于子 class(主键 class 用 @Embeddable 等注释)

  • 正如用户 DN1 评论的那样,必须使用 @JoinColumn 注释,但必须在拥有 class.

    [ 的外部引用中指定=37=]
  • 出于某种原因,您也不能使用 @PrimaryKeyJoinColumn 而不是 @JoinColumn,否则 JPA 生成连接表。

另一个挑战是拥有 class 的主节点也是复合的,但我还没有尝试过。