Ion*_*ert 0 java database spring many-to-one sql-delete
我有删除到多对一关系的多方面的问题。我已经从关系中删除了所有CascadeTypes,但问题仍然存在。该条目不会被删除(只执行选择,不执行删除查询)。我正在尝试通过 CRUD 存储库调用删除它来删除它。它调用该方法并成功执行但没有任何反应。
关系如下:一个活动有一个分配的课程,一个课程可以有许多分配给它的活动。一个 Activity 有一个特定的 ActivityType。
课程如下。
活动
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;
...
}
Run Code Online (Sandbox Code Playgroud)
课程
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;
...
}
Run Code Online (Sandbox Code Playgroud)
活动类型(没有对活动的引用)
public class ActivityType implements Item, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false, unique = true)
private String name;
...
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题或至少调试它?谢谢你。
在实体orphanRemoval = true的@OneToMany注释中添加属性Course。
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;
...
}
Run Code Online (Sandbox Code Playgroud)