Örnek:
- Bir öğretmenin birden fazla sınıfa sahip olması olarak düşünebiliriz. Buna bir kişinin birden fazla şeye sahip olması denir.
- Tam tersi de @ManyToOne olarak bilinir.
package com.kerem.mvcsec;
import jakarta.persistence.*;
@Entity
@Table(name = "class")
public class Class {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
private String className;
@ManyToOne
@JoinColumn(name = "teacher_id")
private Teacher teacher;
public Class(long id, String className) {
this.id = id;
this.className = className;
}
public Class() {
}
// getters ve settersTeacher.java 'yı güncelleyelim.
@OneToMany(mappedBy = "teacher",fetch = FetchType.LAZY)
private List<Class> classes;
// getter ve setteriBurdaki mapped by da Class sınıfında bulunan teacher propertisine bak @JoinColumn ile ilişkili özellikten bu Teacher ile ilişkili bütün sınıfları yükle.
@Repository
public interface TeacherRepository extends JpaRepository<Teacher, Long>{
@Query("SELECT teacher FROM Teacher as teacher JOIN FETCH teacher.classes WHERE teacher.id=:id")
public Teacher getTeacher(@Param("id") Long id);
}Uygulamamızı da yükleyelim.
@Bean
public CommandLineRunner commandLineRunner() {
return a -> {
Teacher teacher = this.teacherRepo.getTeacher(2L);
System.out.println("Teacher : "+teacher);
};
}