Проблема: при указании всех CascadeType
, кроме CascadeType.REMOVE
над полем private List<Course> courses
в классе Instructor
, при сохранении объекта класса Instructor
не происходит сохранение объектов класса Course
, которые добавляются в List<Course> courses
. При этом в логах нет никаких ошибок. Но если в классе Instructor
над полем private List<Course> courses
указать CascadeType.ALL
, то все работает. Что не так?
Instructor.class
@Entity
@Table(name = "instructor")
public class Instructor {
@Id
@SequenceGenerator(name = "instructor_seq_gen", sequenceName = "instructor_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "instructor_seq_gen")
@Column(name = "id")
private int id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "instructor_detail_id")
private InstructorDetail instructorDetail;
@OneToMany(mappedBy = "instructor", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH})
private List<Course> courses;
public Instructor() {
}
public Instructor(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public InstructorDetail getInstructorDetail() {
return instructorDetail;
}
public void setInstructorDetail(InstructorDetail instructorDetail) {
this.instructorDetail = instructorDetail;
}
public List<Course> getCourses() {
return courses;
}
public void setCourses(List<Course> courses) {
this.courses = courses;
}
public void add(Course course) {
if (courses == null) {
courses = new ArrayList<>();
}
courses.add(course);
course.setInstructor(this);
}
@Override
public String toString() {
return "Instructor{" +
"id=" + id +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
", instructorDetail=" + instructorDetail +
'}';
}
}
Course.class
@Entity
@Table(name = "course")
public class Course {
@Id
@SequenceGenerator(name = "course_seq_gen", sequenceName = "course_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "course_seq_gen")
@Column(name = "id")
private int id;
@Column(name = "title")
private String title;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH})
@JoinColumn(name = "instructor_id")
private Instructor instructor;
public Course() {
}
public Course(String title) {
this.title = title;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Instructor getInstructor() {
return instructor;
}
public void setInstructor(Instructor instructor) {
this.instructor = instructor;
}
@Override
public String toString() {
return "Course{" +
"id=" + id +
", title='" + title + '\'' +
'}';
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть класс Main3Activity, в нем я использую adapter
Как записывать данные в List в Thymeleaf? Выдает ошибку: orgthymeleaf
При загрузке и скачивании файлов JS через FileZilla часто вижу, что файлы портятсяКак решить эту проблему?