0
0
Spring Bootframework~20 mins

@ManyToMany relationship in Spring Boot - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
ManyToMany Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this @ManyToMany mapping retrieval?
Given two entities Student and Course with a bidirectional @ManyToMany relationship, what will be printed when fetching a student and listing their courses?
Spring Boot
public class Student {
  @ManyToMany
  private Set<Course> courses = new HashSet<>();
  // getters and setters
}

public class Course {
  @ManyToMany(mappedBy = "students")
  private Set<Student> students = new HashSet<>();
  // getters and setters
}

// In service:
Student s = studentRepository.findById(1L).get();
System.out.println(s.getCourses().size());
APrints the number of courses the student is enrolled in, e.g., 3
BThrows a NullPointerException because courses is null
CAlways prints 0 because the collection is not initialized
DThrows a LazyInitializationException if session is closed
Attempts:
2 left
💡 Hint
Think about how JPA initializes collections in a @ManyToMany relationship when accessed inside a transaction.
📝 Syntax
intermediate
2:00remaining
Which option correctly defines a bidirectional @ManyToMany relationship?
Select the correct code snippet that defines a bidirectional @ManyToMany relationship between Author and Book entities.
A
@Entity
public class Author {
  @ManyToMany(mappedBy = "authors")
  private Set&lt;Book&gt; books = new HashSet&lt;&gt;();
}
@Entity
public class Book {
  @ManyToMany
  private Set&lt;Author&gt; authors = new HashSet&lt;&gt;();
}
B
@Entity
public class Author {
  @ManyToMany
  private Set&lt;Book&gt; books = new HashSet&lt;&gt;();
}
@Entity
public class Book {
  @ManyToMany(mappedBy = "books")
  private Set&lt;Author&gt; authors = new HashSet&lt;&gt;();
}
C
@Entity
public class Author {
  @OneToMany
  private Set&lt;Book&gt; books = new HashSet&lt;&gt;();
}
@Entity
public class Book {
  @ManyToMany(mappedBy = "books")
  private Set&lt;Author&gt; authors = new HashSet&lt;&gt;();
}
D
@Entity
public class Author {
  @ManyToMany
  private List&lt;Book&gt; books = new ArrayList&lt;&gt;();
}
@Entity
public class Book {
  @ManyToMany(mappedBy = "books")
  private List&lt;Author&gt; authors = new ArrayList&lt;&gt;();
}
Attempts:
2 left
💡 Hint
The owning side does not use mappedBy, the inverse side uses mappedBy with the owning side's field name.
🔧 Debug
advanced
2:30remaining
Why does this @ManyToMany relationship cause a duplicate entry error?
Consider this code snippet where adding the same Course twice to a Student causes a database constraint violation. What is the likely cause?
Spring Boot
Student s = studentRepository.findById(1L).get();
Course c = courseRepository.findById(2L).get();
s.getCourses().add(c);
s.getCourses().add(c);
studentRepository.save(s);
AThe equals and hashCode methods are not overridden in Course entity
BThe Set collection is not properly initialized, allowing duplicates
CThe cascade type is missing, so duplicates are inserted
DThe join table is missing a unique constraint
Attempts:
2 left
💡 Hint
Sets rely on equals and hashCode to avoid duplicates.
lifecycle
advanced
2:30remaining
What happens when you remove an entity from a @ManyToMany collection and save?
Given a Student entity with a @ManyToMany relationship to Course, what happens in the database when you remove a Course from the Student's courses set and save the Student?
Spring Boot
Student s = studentRepository.findById(1L).get();
Course c = courseRepository.findById(2L).get();
s.getCourses().remove(c);
studentRepository.save(s);
AAn exception is thrown because orphanRemoval is not enabled
BThe Course entity is deleted from the database
CNothing changes because cascade remove is not set
DThe link between Student and Course is removed from the join table
Attempts:
2 left
💡 Hint
Removing from a collection updates the join table, not the related entity itself.
🧠 Conceptual
expert
3:00remaining
Which statement about @ManyToMany join tables is true?
Choose the correct statement about the join table used in a @ManyToMany relationship in JPA.
AThe join table cannot be customized in JPA
BThe join table is automatically an entity and can be queried directly
CThe join table must have a composite primary key of both foreign keys by default
DThe join table stores additional entity attributes by default
Attempts:
2 left
💡 Hint
Think about how JPA manages many-to-many relationships internally.