0
私は2つのエンティティコースとコースユーザーを持っています。 CourseUserにOneToMany注釈でマップされたコース。 CourseUserをCourse内のCourseUsersのリストに追加して更新すると、CourseUserテーブルに新しい行が表示されますが、コースにはマッピングされません。もし私が更新後にcourseUsersリストのtoStringを呼び出すと、それは空になります。Hibernate OneToMany関係は新しいデータをマップしません
@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エンティティ:
@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;
これは私がコースに新しいcourseUserを追加する方法である:で
public void update(Courses course) {
Session session = sf.openSession();
Transaction transaction = session.beginTransaction();
session.merge(course);
session.flush();
transaction.commit();
session.close();
}
'を設定するのはどのようなのですか?courseUsers = new HashSet <>(0)'? –
私はこのチュートリアルのようにしました。https://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example-annotation/ – Petych