Ich habe zwei Einheiten Kurse und CourseUser. Kurse, die OneToMany-Annotation zu einem CourseUser zugeordnet werden. Nachdem ich einen CourseUser in einer Liste von CourseUsers in Course hinzugefügt und aktualisiert habe, wird in der Tabelle CourseUser eine neue Zeile angezeigt, die jedoch keinem Kurs zugeordnet ist. Wenn ich toString of courseUsers-Liste von Kursen nach dem Update aufruft, ist es leer.Hibernate OneToMany Beziehung nicht neue Daten zuordnen
@Entity
@Table(name = "COURSES")
public class Courses{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "course_id")
private int course_id;
@Column(name = "course_name", nullable = false)
private String courseName;
@Autowired
@OneToMany(mappedBy = "course", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<CourseUser> courseUsers = new HashSet<>(0);
CourseUser Einheit:
@Entity
@Table(name = "COURSE_USERS",
uniqueConstraints = {@UniqueConstraint(columnNames = {"course_name", "user_name"})})
public class CourseUser {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ev_id")
private int ev_id;
@Column(name = "course_name", nullable = false)
private String courseName;
@Column(name = "user_name", nullable = false)
private String userName;
@Column(name = "course_role")
private String courseRole;
@Column(name = "grade")
private int grade ;
@ManyToOne
@JoinColumn(name = "course_id")
private Courses course;
das ist, wie ich neue courseUser zu einem Kurs hinzufügen:
Courses course = courseDAO.getCourse(id);
Set<CourseUser> courseUsers = course.getCourseUsers();
CourseUser newUser = new CourseUser();
newUser.setUserName(name);
newUser.setCourseRole(role);
newUser.setCourseName(course.getCourseName());
courseUsers.add(newUser);
course.setCourseUsers(courseUsers);
update(course);
und hier ist CoursesDAO Update-Methode: Bei
public void update(Courses course) {
Session session = sf.openSession();
Transaction transaction = session.beginTransaction();
session.merge(course);
session.flush();
transaction.commit();
session.close();
}
Was ist der Zweck der Initialisierung 'Set courseUsers = new HashSet <> (0)'? –
Ich habe es wie in diesem Tutorial getan https://www.mkyong.com/hibernate/hibernate-one-to-my-relationship-example-annotation/ – Petych