我有一个正在处理的项目,其中有一个组,并且该组有一个组图像(id和url)。当我删除特定的组时,我也希望它也从MySql数据库中删除其图像实体。
但是,数据库中的第一个组图像实体是我放置在其中的通用图标的URL,ID为1。
我了解到,当我删除组时,由于将层叠类型设置为全部,因此关联的图像实体也会被删除。
当使用通用图标的组被删除时,这将带来一个问题,因为它会将group_image_id设置为NULL,从而导致NPE。
我的问题是,有没有一种方法可以保护单个组图像实体免受级联删除的影响?
答案 0 :(得分:0)
我从未尝试过此方法,但是要探索的一个选项是自定义在id = 1时要防止删除的实体类型上使用的delete语句。您可以使用@SQLDelete
批注执行此操作,并在其中包含“和id <> 1”或类似内容。
默认行为(不指定@SQLDelete)是按ID删除。
我建议您尝试以下方法:
@Table(name="mytable")
@SQLDelete("delete from mytable where id=? and id<>1")
public class MyEntity {
...
}