Каскад Hibernate: удаление дочерней сущности, когда родительская сущность сохраняется без дочерней сущности - PullRequest
0 голосов
/ 27 апреля 2018

Итак, у меня есть объект расписания, который содержит список DateActiveScheduleItems. Я хочу, чтобы, если я удаляю элемент DateActiveScheduleItems из списка в объекте расписания и сохранял это расписание с помощью CrudRepository, он удаляет DateActiveScheduleItem из базы данных по адресу в тот момент, когда мой код, похоже, этого не делает. Как мне изменить каскад?

@Entity
public class Schedule {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne
@JoinColumn(name = "user_id")
private User user;

@ManyToOne
@JoinColumn(name = "usergroup_id")
private UserGroup userGroup;

private String description;


private boolean master;//is this a schedule for all supervalus(true) or one supervalu(false)

@OneToMany(mappedBy = "schedule",cascade = CascadeType.ALL)
private List<DateActiveScheduleItem> dateActiveScheduleItems = new ArrayList<>();

@OneToMany(mappedBy = "schedule",cascade = CascadeType.PERSIST)
private List<MusicScheduleItem> musicScheduleItems = new ArrayList<>();

@OneToMany(mappedBy = "schedule",cascade = CascadeType.PERSIST)
private List<AdvertisementScheduleItem> advertisementScheduleItems = new ArrayList<>();

@Basic
@Temporal(TemporalType.DATE)
private java.util.Date dateAdded;
public Long getId() {
    return id;
 //getters setters
}

DateActiveScheduleItem

@Entity
public class DateActiveScheduleItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Basic
@Temporal(TemporalType.DATE)
private Date date;



@JsonIgnore
@ManyToOne
@JoinColumn(name = "schedule_id")
private Schedule schedule;
//getters setters}

1 Ответ

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

Удаление сирот удаляет соответствующего ребенка при удалении его из отношений. Таким образом, если вы удалите 1 DateActiveScheduleItem из коллекции dateActiveScheduleItems, JPA автоматически удалит этот DateActiveScheduleItem из базы данных.

@OneToMany(mappedBy = "schedule",cascade = CascadeType.ALL, orphanRemoval="true")
private List<DateActiveScheduleItem> dateActiveScheduleItems = new ArrayList<>();

Подробнее об OrphanRemovel ЗДЕСЬ

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