SkillLevelEntity.java
package fr.avenirsesr.portfolio.api.infrastructure.adapter.model;
import fr.avenirsesr.portfolio.api.domain.model.enums.ESkillLevelStatus;
import jakarta.persistence.*;
import java.time.LocalDate;
import java.util.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@Table(name = "skill_level")
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class SkillLevelEntity extends PeriodEntity<LocalDate> {
@Column
@Enumerated(EnumType.STRING)
private ESkillLevelStatus status;
@ManyToMany(mappedBy = "skillLevels")
private List<TraceEntity> traces;
@ManyToMany(mappedBy = "skillLevels")
private List<AMSEntity> amses;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "skill_id")
private SkillEntity skill;
@OneToMany(
mappedBy = "skillLevel",
cascade = CascadeType.ALL,
orphanRemoval = true,
fetch = FetchType.LAZY)
private Set<SkillLevelTranslationEntity> translations =
new HashSet<>(); // TODO: Remove this SET and get it in queries
public SkillLevelEntity(
UUID id,
ESkillLevelStatus status,
List<TraceEntity> traces,
List<AMSEntity> amses,
SkillEntity skill,
LocalDate startDate,
LocalDate endDate) {
setId(id);
this.status = status;
this.traces = traces;
this.amses = amses;
this.skill = skill;
this.startDate = startDate;
this.endDate = endDate;
}
@Override
public String toString() {
return "SkillLevelEntity[%s]".formatted(getId());
}
}