簡體   English   中英

實體映射中的重復列:entity.LaAssociateGridEntity 列:AssociateId(應使用 insert=“false” update=“false”進行映射)

[英]Repeated column in mapping for entity: entity.LaAssociateGridEntity column: AssociateId (should be mapped with insert=“false” update=“false”)

我有兩個不同的 rest 端點將數據插入數據庫,其中:

  • /api1 將數據插入Table1Table3
  • 其中 /api2 會將數據插入表Table1Table3但在將數據插入數據庫時會遇到此錯誤。

我有三個表: Table1Table2Table3

  • Table1 和 Table3 的關聯是@OneToMany
  • Table2 和 Table3 的關聯是ALSO @OneToMany

我得到的解決方案是:(應該使用 insert="false" update="false" 進行映射)但這會阻止將這些列的數據插入和更新到數據庫中。

如何在我遇到問題的地方使用這些共享代碼塊片段。 如果您希望我分享整個代碼,請告訴我

@Data @EqualsAndHashCode(callSuper = true) @Entity @Table(name = "[dbo].[LAInstructions]")
public class LaInstructionsEntity extends AuditableFields<Long> {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "Id")
    private Long id;

    @JsonManagedReference
    @**OneToMany**(mappedBy = "laInstructionsEntity", cascade = CascadeType.ALL)
    private List<LaAssociateGridEntity> laAssociateGridEntities;

    @Column(name = "Active")
    private Boolean active;

}

表 2:

@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = "[dbo].[LALegalCreditCheck]")
public class LALegalCreditCheckEntity extends AuditableFields<Long> {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "Id")
    private Long id;

    @JsonManagedReference
    @**OneToMany**(mappedBy = "laLegalCreditCheckEntity", cascade = CascadeType.ALL, targetEntity = LaAssociateGridEntity.class)
    List<LaAssociateGridEntity> laAssociateGridEntities;

    @Column(name = "Active")
    Boolean active;

}

表3:

@Data @EqualsAndHashCode(callSuper = true) @Entity @Table(name = "[dbo].[LAAssociateGrid]")
public class LaAssociateGridEntity extends AuditableFields<Long> {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "Id")
    private Long id;

    @Column(name = "Active")
    private Boolean active;

    @JsonBackReference
    @**ManyToOne**(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "AssociateId", referencedColumnName = "Id")
    private LaInstructionsEntity laInstructionsEntity;

    @**ManyToOne**(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "AssociateId", referencedColumnName = "Id")
    private LALegalCreditCheckEntity laLegalCreditCheckEntity;

}

此錯誤表示在LaAssociateGridEntity中, laInstructionsEntitylaLegalCreditCheckEntity字段也都映射到同一列(即AssociateId ),因此 Hibernate 不知道映射此列時應考慮哪些字段。

我相信其中一個有錯別字。 LaInstructionsEntityLALegalCreditCheckEntity是不同的實體。 如果沒有另一個鑒別器列,您如何區分LaAssociateGridEntity中的同一個AssociateId ,它的父級是LaInstructionsEntityLALegalCreditCheckEntity

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM