多个实体一对多连接

Multiple entity one to many joins

我有一个实体,我需要 link 给它多个子实体,我的例子是: 我有 Invoice Header 实体,我想 link 使用 @OneToMany 多个实体,Invoice Adjustment 和 Prior Notice Entity 。

所以发票抬头可以有一个或多个Invoice Adjustment和一个或多个Prior Notice。

我可以 link 到一个实体,但不确定如何才能 link 到另一个实体,因为我正在尝试不同的选择但没有工作,

例如下面是我的代码和错误。

public class InvoiceHeader extends InvoiceProcessing{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Size(max = 1)
private String recordId;
@Size(max = 1)
private String action;


  @OneToMany(mappedBy = "invoiceHeader", cascade = 
  CascadeType.ALL,orphanRemoval = true)
  private List<InvoiceAdjustment> invoiceAdjustments = new ArrayList<>();

  @OneToMany(mappedBy = "priorNotice", cascade = 
  CascadeType.ALL,orphanRemoval = true)
  private List<PriorNoticeFoodAndDrugAdmin> priorNoticeFoodAndDrugAdmins = new ArrayList<>();

}

public class InvoiceAdjustment extends InvoiceProcessing{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String recordId;
private String reserved;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "invoiceHeader_id")
  private InvoiceHeader invoiceHeader;
}


public class PriorNoticeFoodAndDrugAdmin extends InvoiceProcessing{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String recordId;
private String reserved;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "priorNotice_id")
   private InvoiceHeader invoiceHeader;
}

这是我遇到的错误:

Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.invoiceconverter.invoiceconverter.model.PriorNoticeFoodAndDrugAdmin.priorNotice in com.invoiceconverter.invoiceconverter.model.InvoiceHeader.priorNoticeFoodAndDrugAdmins
public class InvoiceHeader extends InvoiceProcessing{
    ...

    @OneToMany(mappedBy = "invoiceHeader", ... )
    private List<InvoiceAdjustment> invoiceAdjustments = new ArrayList<>();

    @OneToMany(mappedBy = "invoiceHeader", ...)
    private List<PriorNoticeFoodAndDrugAdmin> priorNoticeFoodAndDrugAdmins = new ArrayList<>();

}

mappedBy 命名关联实体上的属性,它定义了该关联的外键。在这两种情况下都是名为 "invoiceHeader".

的属性

此外,对于 PriorNoticeFoodAndDrugAdmin#invoiceHeader 的 FK 列,您可能并不意味着 "priorNotice_id" - 我认为您也会将该列命名为 "invoiceHeader_id"