package com.allstate.entities; import com.allstate.enums.Department; import com.allstate.enums.Gender; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; import javax.persistence.*; import javax.validation.constraints.DecimalMin; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.ArrayList; import java.util.Date; import java.util.List; @Entity @Table(name = "teachers") @Data public class Teacher { private int id; private int version; private String name; private int age; private Gender gender; private Date created; private Date modified; // associations *** private List<Klass> klasses; public Teacher() { } public Teacher(String name, int age, Gender gender) { this.name = name; this.age = age; this.gender = gender; } @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } @Version public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } @Size(min = 1) @NotNull public String getName() { return name; } public void setName(String name) { this.name = name; } @Min(value = 21) @NotNull public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Column(columnDefinition = "ENUM('MALE', 'FEMALE')") @Enumerated(EnumType.STRING) @NotNull public Gender getGender() { return gender; } public void setGender(Gender gender) { this.gender = gender; } @CreationTimestamp public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } @UpdateTimestamp public Date getModified() { return modified; } public void setModified(Date modified) { this.modified = modified; } // --------------------------------------------------------------------- // // --------------------------------------------------------------------- // // --------------------------------------------------------------------- // @OneToMany(mappedBy = "teacher") @JsonIgnore public List<Klass> getKlasses() { return klasses; } public void setKlasses(List<Klass> klasses) { this.klasses = klasses; } }