gpt4 book ai didi

Java Spring 存储库删除不起作用 OneToMany 关系

转载 作者:行者123 更新时间:2023-12-01 16:49:14 24 4
gpt4 key购买 nike

我在删除 ManyToOne 关系的多方时遇到问题。我已经从关系中删除了所有 CascadeTypes,但问题仍然存在。该条目不会被删除(仅执行选择,不执行删除查询)。我正在尝试通过 CRUD 存储库调用来删除它。它调用该方法并成功执行,但没有任何反应。

关系如下:一个 Activity 有一个分配的类(class),一个类(class)可以有许多分配给它的 Activity 。一个 Activity 有一个特定的 ActivityType。

类(class)如下。

Activity

public class Activity implements Item, Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

...

@ManyToOne
@JoinColumn(name = "type_id", nullable = false)
private ActivityType type;

@ManyToOne
@JoinColumn(name = "course_id", nullable = false)
@JsonSerialize(using = CustomCourseSerializer.class)
private Course course;

...
}

类(class)

public class Course implements Item, Serializable {

...

@OneToMany(mappedBy = "course", fetch = FetchType.EAGER, targetEntity = Activity.class) //cascade = { CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH, CascadeType.REMOVE}
@Fetch(value = FetchMode.SUBSELECT)
private List<Activity> activities;

...
}

Activity 类型(不涉及 Activity )

public class ActivityType implements Item, Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "name", nullable = false, unique = true)
private String name;
...
}

有什么想法可以解决这个问题或者至少调试它吗?谢谢。

最佳答案

Course 实体的 @OneToMany 注释中添加 orphanRemoval = true 属性。

public class Course implements Item, Serializable {

...

@OneToMany(mappedBy = "course", fetch = FetchType.EAGER, targetEntity = Activity.class, orphanRemoval = true, cascade = CascadeType.REMOVE )
@Fetch(value = FetchMode.SUBSELECT)
private List<Activity> activities;

...

}

关于Java Spring 存储库删除不起作用 OneToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43845441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com