【发布时间】:2021-03-13 19:13:42
【问题描述】:
目前我有以下 2 个具有一对多关系的实体 -
@Data
@Entity
@Table(name = "invoice_line")
@IdClass(InvoiceLinePK.class)
public class InvoiceLineEntity {
@Id
@Column(name = "line_id")
private String lineId;
@Id
@Column(name = "client_id")
private Integer clientId;
@Id
@Column(name = "invoice_id")
private String invoiceId;
@Column(name = "item_id")
private String itemId;
@Column(name = "amount")
private BigDecimal amount;
@ManyToOne
private InvoiceEntity invoice;
}
@Entity
@Table(name = "invoice")
@IdClass(InvoicePK.class)
@Data
public class InvoiceEntity {
@Id
@Column(name = "client_id")
private Integer clientId;
@Id
@Column(name = "invoice_id")
private String invoiceId;
@Column(name = "description")
private String description;
@Column(name = "txn_total_amount")
private BigDecimal txnTotalAmount;
@Column(name = "created_time", updatable = false)
@CreationTimestamp
private Date createdTime;
@Column(name = "updated_time")
@UpdateTimestamp
private Date updatedTime;
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "invoice")
private List<InvoiceLineEntity> invoiceLines;
}
假设我的一张现有发票有 3 行,我收到一个请求,要求此特定发票已更新,现在它只有 1 行而不是之前的 3 行(因此其他 2 行必须是已删除),我想用这 1 个 InvoiceLineEntity 创建一个新的 Invoice 对象,然后执行 invoiceRepository.save(invoice)
我预计其他 2 个 InvoiceLine 记录将被自动删除,因为 orphanRemoval 标志已启用。
谁能告诉我如何通过调整上述2个实体的实体关系结构来实现这种关系?
【问题讨论】:
标签: java spring-boot hibernate spring-data-jpa