0

我有以下问题,有设备:

@OneToMany(mappedBy = 'sender', cascade = CascadeType.ALL, fetch = FetchType.EAGER) Set<Gift> sentGifts = []
@OneToMany(mappedBy = 'receiver', cascade = CascadeType.ALL, fetch = FetchType.EAGER) Set<Gift> receivedGifts = []

和礼物:

@ManyToOne Device sender
@ManyToOne Device receiver

问题是我无法理解如何正确删除礼物。

我可以这样做 > gift.sender = null > save(gift) > gift.receiver = null > save(gift) > ...

但我认为这不是正确的方法,也许应该以另一种方式指定级联?

谢谢!

4

1 回答 1

0

您应该在移除之前对引用礼物的设备进行更新,否则这些引用仍将存在于您的对象模型中,并可能导致礼物复活。从 sender 的 sentGifts 集和接收者的 receivedGifts 集中删除礼物,然后保存两者,然后删​​除礼物就足够了。发送方和接收方设备的更改不会导致数据库更改;它们只是为了使您的实体与您在数据库中想要的内容保持一致,但应该这样做,因为实体可以缓存在 JPA 中。在删除礼物之前,没有理由取消礼物的接收者或发送者。

于 2013-09-10T21:07:23.937 回答