JPA:具有复合半共享主键且无联接表的单向一对多关系

JPA:具有复合半共享主键且无联接表的单向一对多关系,jpa,composite-primary-key,jointable,Jpa,Composite Primary Key,Jointable,JPA: 如何在JPA中对以下内容进行建模: 单向一对多关系 其中,拥有实体有一个单列应用程序确定的主键,以及 其中子实体有一个复合主键,并且 其中子项主键的一部分是父项主键,并且 避免JPA生成联接表 有什么想法吗?我自己想出了办法 您需要在拥有的实体中用 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "myId", referencedColumnName = "par

JPA:

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

  • 单向一对多关系
  • 其中,拥有实体有一个单列应用程序确定的主键,以及
  • 其中子实体有一个复合主键,并且
  • 其中子项主键的一部分是父项主键,并且
  • 避免JPA生成联接表

有什么想法吗?

我自己想出了办法

  • 您需要在拥有的实体中用

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "myId", referencedColumnName = "parentId")
    private List<ChildEntity> childEntity;
    
  • 有关复合主键的常规规则适用于子类(用
    @embeddeble
    等注释的主键类)

  • 正如用户DN1所评论的,必须使用
    @JoinColumn
    注释,但必须在所属类的外部引用处指定注释

  • 出于某种原因,您也不能使用
    @PrimaryKeyJoinColumn
    而不是
    @JoinColumn
    ,否则JPA将生成联接表


另一个挑战是所属类的主类也是复合类,但我还没有尝试过

如果未指定任何
@JoinColumn
,则只能获得一个联接表,因此只需确保您有一个
@JoinColumn
。其余部分与此无关。我有一个想法:你能给我们展示一组实体的例子吗(甚至是草图之类的)?我特别感兴趣的是拥有实体有一个由应用程序确定的单列主键,而子实体有一个复合主键的情况。
@Id
private String parentId;