Удалить потомков от удаления родителя во многих отношениях к одному - PullRequest
0 голосов
/ 26 апреля 2018

Родительский класс:

public class Article implements Serializable {

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

@Email
@NotNull
@Column(name = "email")
String email;

@Column(name = "title")
String title;

@Column(name = "published")
Boolean published;

@OneToMany(mappedBy = "article", cascade = {CascadeType.REMOVE},  orphanRemoval = true)
private Set<Comment> comments = new HashSet<>();

// setters and getters
}

Детский класс:

public class Comment implements Serializable {

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

@Email
@NotNull
@Column(name = "email")
String email;

@JsonIgnore
@ManyToOne
@JoinColumn(name = "article_id", referencedColumnName = "id")
Article article;

// setters and getters
}

что я хочу сделать, это то, что при удалении статьи, например, с id = "1", он должен автоматически удалять все свои комментарии ... так как это сделать с аннотациями ?? другими словами например, когда вы делаете запрос на удаление для почтальона на http://localhost:8080/articles/1, где 1 - идентификатор статьи для удаления ... он должен удалить все свои комментарии, а также

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы должны создать другую сторону отношений Article, которая:

@OneToMany(cascade=CascadeType.All) @JoinColumn(name="article_id") List<Comment> comments

То есть с этим отношением, если вы удалите один Article, все его комментарии будут удалены.

0 голосов
/ 26 апреля 2018

Просто добавьте отношение OneToMany от Article к Comment:

@OneToMany(mappedBy = "article", orphanRemoval = true)
private Set<Comment> comments = new HashSet<>();

Каскадные операции REMOVE от родителя к ребенку требуют отношения от родителя к ребенку.

Обновление: Добавлено orphanRemoval = true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...