Örnek:

  1. Bir öğretmenin birden fazla sınıfa sahip olması olarak düşünebiliriz. Buna bir kişinin birden fazla şeye sahip olması denir.
  2. Tam tersi de @ManyToOne olarak bilinir.


Class.java

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 setters


Teacher.java 'yı güncelleyelim.

@OneToMany(mappedBy = "teacher",fetch = FetchType.LAZY)
private List<Class> classes;
// getter ve setteri

Burdaki 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.


TeacherRepository.java

@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);
    };
}