0
複数のOneToMany関係からエントリを削除しようとしていますが、何をしてもコレクションを更新しません。Spring JPA OneToManyコレクションのエントリを削除しない
評価、コンテンツ、ユーザーの3つのクラスがあります。私は、コンテンツとユーザーコレクションを正しく埋め込む評価を作成することができます。ただし、コレクションから評価を削除することはできません。レーティングは正常に削除されますが、コンテンツとユーザーのコレクションは更新されません。手動で、それはまだ更新されていないコレクションから削除した場合でも
public class Rating {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne(fetch = FetchType.EAGER)
@JsonIdentityInfo(generator = JSOGGenerator.class)
private User user;
@ManyToOne(fetch = FetchType.EAGER)
@JsonIdentityInfo(generator = JSOGGenerator.class)
private Content content;
public void setUser(User user) {
this.user = user;
if (!user.getRatings().contains(this)) {
user.getRatings().add(this);
}
}
public void setContent(Content content) {
this.content = content;
if (!content.getRatings().contains(this)) {
content.getRatings().add(this);
}
}
}
public class User {
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIdentityInfo(generator = JSOGGenerator.class)
private Set<Rating> ratings;
public void addRating(Rating rating) {
this.ratings.add(rating);
if (rating.getUser() != this) {
rating.setUser(this);
}
}
public void removeRating(Rating rating) {
ratings.remove(rating);
}
}
public class Content {
@OneToMany(mappedBy = "content", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIdentityInfo(generator = JSOGGenerator.class)
private Set<Rating> ratings;
public void addRating(Rating rating) {
this.ratings.add(rating);
if (rating.getContent() != this) {
rating.setContent(this);
}
}
public void removeRating(Rating rating) {
ratings.remove(rating);
}
}
public class RatingController {
@RequestMapping(value = "/api/ratings/{id}", method = RequestMethod.DELETE)
public void deleteRating(@PathVariable("id") int ratingId) {
Rating rating = ratingService.getRatingById(ratingId);
if (rating == null) {
return;
}
// THIS DOES NOT DO ANYTHING
rating.getUser().removeRating(rating);
// THIS DOES NOT DO ANYTHING
rating.getContent().removeRating(rating);
ratingService.deleteRating(rating);
}
}
:次の3つのクラスです。何か案は?
を私は(両方のhashCodeを実装) 3つのクラスすべてに対してequlas()を呼び出すと、コレクションはまだ更新されません。 (私は保証されたユニークな非ヌルフィールドでIntelliJジェネレータを使用しました) – user3023421
実際にはコンテンツのレーティングが更新されていますが、何らかの理由でユーザがそうではありません。奇妙な、なぜ私は詳細を調べるでしょう – user3023421
Xtremeバイカー、ありがとう、ありがとう。 – user3023421