Newer
Older
teacher-diary / src / main / java / ru / mcs / diary / group / Subject.java
package ru.mcs.diary.group;

import jakarta.persistence.*;
import lombok.*;
import ru.mcs.diary.common.BaseEntity;
import ru.mcs.diary.teacher.Teacher;

import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "subjects", uniqueConstraints = {
        @UniqueConstraint(columnNames = {"name", "teacher_id"})
})
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Subject extends BaseEntity {

    @Column(nullable = false, length = 100)
    private String name;

    @Column(columnDefinition = "TEXT")
    private String description;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "teacher_id", nullable = false)
    private Teacher teacher;

    @OneToMany(mappedBy = "subject")
    @Builder.Default
    private List<StudyGroup> groups = new ArrayList<>();
}