JPA:与没有连接表的复合半共享主键的单向一对多关系

时间:2017-12-05 15:21:55

标签: jpa composite-primary-key jointable

JPA:

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

  • 单向一对多关系
  • 其中拥有实体具有单列应用程序确定的主键 AND
  • 其中子实体具有复合主键AND
  • 子主键的一部分是父键的主键 AND
  • 避免 JPA生成连接表。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我弄清楚自己该怎么做。

  • 您需要使用

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

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

  • 当用户DN1注释时,必须使用@JoinColumn注释,但必须在拥有类的外部引用中指定它。

  • 出于某种原因,您也不得使用@PrimaryKeyJoinColumn代替@JoinColumn,否则JPA 生成联接表。

另一个挑战是拥有类的主要也是复合的,但我没有尝试过。