Hibernate / Hibernate 7 Basics Interview Questions
What is the @ManyToMany relationship in Hibernate 7 and how do you map it?
A many-to-many relationship requires a join table. Each entity can be associated with multiple instances of the other.
@Entity public class Student { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; private String name; @ManyToMany(fetch=FetchType.LAZY) @JoinTable( name="student_course", joinColumns=@JoinColumn(name="student_id"), inverseJoinColumns=@JoinColumn(name="course_id") ) private Set<Course> courses = new HashSet<>(); public void enrollIn(Course c) { courses.add(c); c.getStudents().add(this); // keep both sides in sync! } } @Entity public class Course { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; private String title; @ManyToMany(mappedBy="courses") // inverse side private Set<Student> students = new HashSet<>(); } // When you need extra columns on the join: use an explicit join entity! @Entity public class Enrollment { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name="student_id") private Student student; @ManyToOne @JoinColumn(name="course_id") private Course course; private LocalDate enrolledAt; // impossible with @ManyToMany private String grade; }
More Related questions...