package com.allstate.entities;
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.NotNull;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Entity
@Table(name = "students")
@Data
public class Student {
private int id;
private int version;
private String email;
private Date created;
private Date modified;
// associations ***
private List<Registration> registrations;
private List<Klass> klasses;
public Student() {
}
public Student(String email) {
this.email = email;
}
@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 = 7)
@NotNull
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@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 = "student")
@JsonIgnore
public List<Registration> getRegistrations() {
return registrations;
}
public void setRegistrations(List<Registration> registrations) {
this.registrations = registrations;
}
@ManyToMany(mappedBy="students")
@JsonIgnore
public List<Klass> getKlasses() {
return klasses;
}
public void setKlasses(List<Klass> klasses) {
this.klasses = klasses;
}
}