Как обновить объект в спящем режиме?

#java #hibernate

Вопрос:

Я написал простой java-проект, в котором вы можете создать расписание, но у меня проблема с обновлением сущности курса. я пытаюсь написать функцию, которая может добавить лекцию в курс : relation OneToMany. сначала я запускаю функцию .read, чтобы получить лекцию, а затем Курс из базы данных, затем с помощью .getLectures().add() Я хочу добавить лекцию, чтобы установить, какой у моего класса курса, а затем с помощью функции .update() Я пытаюсь обновить информацию о курсе в базе данных, но ничего не происходит. спящий режим делает только запрос на выбор. мой код:

 Lecture lecture = lectureDao.read(lectureId);  Course course = courseDao.read(courseId);  course.getLecture().add(lecture);  courseDao.update(course);   @Override  public Course read(int id) {  transaction = currentSession().beginTransaction();  Course course = currentSession().get(Course.class, id);  currentSession().close();  return course; }   @Override public void update(Course course) {  if (transaction == null) {  try {  transaction = currentSession().beginTransaction();  currentSession().update(course);  currentSession().flush();  transaction.commit();  } catch (Exception e) {  e.printStackTrace();  }  currentSession().close();  } }  

_

 public class Course { @Id private int courseID; private String courseName;  @OneToMany (cascade = CascadeType.ALL) private Setlt;Studentgt; students = new HashSetlt;gt;();  @OneToMany (cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) private Setlt;Lecturegt; lecture = new HashSetlt;gt;();  public Course(){  super(); }  public Course(String courseName, int courseID, Setlt;Studentgt; students, Setlt;Lecturegt; lecture) {  this();  this.courseName = courseName;  this.students = students;  this.courseID = courseID;  this.lecture = lecture; }  public int getCourseID() {  return courseID; }  public Setlt;Lecturegt; getLecture() {  return lecture; }  public String getCourseName() {  return courseName; }  public Setlt;Studentgt; getStudents() {  return students; }  @Override public String toString() {  return "Course{"    "ID="   courseID    ", courseName='"   courseName   '''    '}'; }  

}

 public class Lecture { @Id private int ID; private String lectureName; private Date startTime;  public Lecture() {  super(); }  public Lecture(String lectureName, Date startTime, int id) {  this.lectureName = lectureName;  this.startTime = startTime;  this.ID = id; }  public int getID() {  return ID; }  public String getLectureName() {  return lectureName; }   public Date getStartTime() {  return startTime; }  

Комментарии:

1. Пожалуйста, покажите нам сущности.

2. @Lesiak изменить: добавить код сущностей

Ответ №1:

Трудно сказать наверняка, так как мы не видим кода сущностей. Это однонаправленное или двунаправленное отображение? Может быть, вы забыли о @CASCADETYPE.СОХРАНЯЙТЕ аннотацию? Также я бы рекомендовал сделать метод в Course.java для добавления новой лекции в курс, что-то вроде

 public void addNewLecture (Lecture lecture) { If (lectureList == null){ lectureList = new ArrayListlt;gt;(); }  this.lectureList.add(lecture); lecture.setCourse(this); }    

Извините за плохое форматирование, но сейчас я нахожусь в приложении для Android

Комментарии:

1. изменить: добавить код сущностей