UserEntity.java
package fr.avenirsesr.portfolio.api.infrastructure.adapter.model;
import jakarta.persistence.AttributeOverride;
import jakarta.persistence.AttributeOverrides;
import jakarta.persistence.Column;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Email;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@Table(name = "\"user\"")
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class UserEntity extends AvenirsBaseEntity {
@Column(nullable = false)
private String firstName;
@Column(nullable = false)
private String lastName;
@Email @Column private String email;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "bio", column = @Column(name = "student_bio")),
@AttributeOverride(name = "isActive", column = @Column(name = "student_is_active")),
@AttributeOverride(name = "profilePicture", column = @Column(name = "student_profile_picture")),
@AttributeOverride(name = "coverPicture", column = @Column(name = "student_cover_picture"))
})
private StudentEntity student;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "bio", column = @Column(name = "teacher_bio")),
@AttributeOverride(name = "isActive", column = @Column(name = "teacher_is_active")),
@AttributeOverride(name = "profilePicture", column = @Column(name = "teacher_profile_picture")),
@AttributeOverride(name = "coverPicture", column = @Column(name = "teacher_cover_picture"))
})
private TeacherEntity teacher;
public UserEntity(
UUID id,
String firstName,
String lastName,
String email,
StudentEntity student,
TeacherEntity teacher) {
this.setId(id);
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.student = student;
this.teacher = teacher;
}
}