#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. изменить: добавить код сущностей