Объединение нескольких сущностей один ко многим - PullRequest
0 голосов
/ 14 октября 2019

У меня есть объект, который мне нужен, чтобы связать с ним несколько дочерних объектов, мой пример: у меня есть объект заголовка счета-фактуры, и я хочу связать с ним, используя @OneToMany несколько объектов, объект настройки счета-фактуры и объект предварительного уведомления.

Таким образом, заголовок счета-фактуры может иметь одну или несколько настроек счета-фактуры и одно или несколько предварительных уведомлений.

Я в порядке, чтобы связываться с одним объектом, но не уверен, как я могу связать с другим, как я "я пробую разные варианты и не работаю,

для примера ниже мой код и ошибка.

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

1 Ответ

1 голос
/ 14 октября 2019
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».

Кроме того, вы, вероятно, не имели в виду «priorNotice_id» для столбца FK для PriorNoticeFoodAndDrugAdmin#invoiceHeader - я думаю, вы бы назвали этот столбец «invoiceHeader_id» какхорошо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...