春季数据JPA - 休眠 - 一对多,多对一双向



有 2 个实体:订单和产品。 1个订单可以有多个产品,许多产品可以属于1个订单(每个产品只属于1个订单(。

通过订单实体的单向关联,我能够在执行 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;
}

在 product 处插入时;我们收到错误:">在表上插入或更新违反了外键约束 jpa">

执行 productRep.findAll((: 休眠选择查询的无限循环

试过@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;

最新更新