package ciai.model; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.JsonView; import ciai.view.Views; @Entity public class Degree { @Id @GeneratedValue(strategy = GenerationType.AUTO) @JsonView(Views.PublicView.class) private Long id; @JsonView(Views.PublicView.class) private String name; @JsonView(Views.PublicView.class) private String description; @OneToMany(mappedBy = "degree", cascade = CascadeType.ALL) private Set students; @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinTable(name = "degree_course", joinColumns = @JoinColumn(name = "degree_id"), inverseJoinColumns = @JoinColumn(name = "course_id")) @JsonView(Views.GuestView.class) @JsonManagedReference private Set courses; public Degree() { } public Degree(String name, String description) { this.setName(name); this.setDescription(description); } public Degree(String name, String description, HashSet courses) { this.setName(name); this.setDescription(description); this.setCourses(courses); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Set getStudents() { return students; } public void setStudents(Set students) { this.students = students; } public Set getCourses() { return courses; } public void setCourses(Set courses) { this.courses = courses; } }