簡體   English   中英

Spring 數據 JPA - Hibernate - OneToMany,ManytoOne 雙向

[英]Spring Data JPA - Hibernate - OneToMany, ManytoOne bidirectional

有 2 個實體:訂單和產品。 1 個訂單可以有許多產品,許多產品可以屬於 1 個訂單(每個產品只屬於 1 個訂單)。

通過 Order Entity 的單向關聯,我可以在執行 orderRepo.findAll() 時檢索產品詳細信息; 以類似的方式,執行 productRepo.findAll() 時需要訂單詳細信息;

試過的代碼:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "order_details")
public class OrderData {

    @Id
    @Column(name = "order_id", nullable = false, unique = true)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long orderId;

    @NotNull
    @Column(name = "customer_name", nullable = false)
    private String customerName;

    @OneToMany(mappedBy = "productId", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private Set<ProductData> products;

}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "product_details")
public class ProductData {

    @Id
    @Column(name = "product_id", nullable = false, unique = true)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long productId;

    @NotNull
    @Column(name = "product_name", nullable = false)
    private String productName;

    @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.ALL)
    @JoinColumn(name = "order_id", nullable = false)
    private OrderData orderData;
}

在插入產品時; 我們收到錯誤: “在表上插入或更新違反了外鍵約束 jpa”

執行 productRep.findAll(): hibernate select 查詢的無限循環

試過@JsonIgnore。 這不會返回子元素或父元素。 嘗試過 @JsonManagedReference 與 @JsonBackReference - 仍然沒有運氣。

請指導我

mappedBy 屬性指向錯誤的字段:

@OneToMany(mappedBy = "productId", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<ProductData> products;

這必須是反向引用:

@OneToMany(mappedBy = "orderData", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<ProductData> products;

暫無
暫無

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

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