Course.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package nju.seec.SEECdemo.data.entity;
  2. import lombok.Data;
  3. import lombok.EqualsAndHashCode;
  4. import lombok.ToString;
  5. import nju.seec.SEECdemo.data.entity.assignment.Code;
  6. import nju.seec.SEECdemo.data.user.User;
  7. import org.hibernate.annotations.LazyCollection;
  8. import org.hibernate.annotations.LazyCollectionOption;
  9. import javax.persistence.*;
  10. import java.util.HashSet;
  11. import java.util.Set;
  12. @Data
  13. @EqualsAndHashCode(exclude = {"codeSet", "groupSet", "creator"})
  14. @ToString(exclude = {"codeSet", "groupSet", "creator"})
  15. @Entity
  16. @Table(name = "ENTITY_COURSE")
  17. public class Course {
  18. @Id
  19. @GeneratedValue(strategy = GenerationType.IDENTITY)
  20. @Column(name = "id")
  21. private Integer id;
  22. @Basic
  23. @Column(name = "name", nullable = false)
  24. private String name;
  25. @ManyToOne(targetEntity = User.class, fetch = FetchType.LAZY)
  26. @JoinColumn(name = "creator", referencedColumnName = "id")
  27. private User creator;
  28. @OneToMany(targetEntity = Code.class, mappedBy = "course", cascade = CascadeType.REMOVE)
  29. @LazyCollection(LazyCollectionOption.EXTRA)
  30. private Set<Code> codeSet = new HashSet<>();
  31. @ManyToMany(targetEntity = User.class, cascade = CascadeType.DETACH)
  32. @JoinTable(name = "LINK_USER_COURSE",
  33. joinColumns = @JoinColumn(name = "course", referencedColumnName = "id"),
  34. inverseJoinColumns = @JoinColumn(name = "user", referencedColumnName = "id")
  35. )
  36. @LazyCollection(LazyCollectionOption.EXTRA)
  37. private Set<User> memberSet = new HashSet<>();
  38. @OneToMany(targetEntity = Group.class, mappedBy = "course", cascade = CascadeType.REMOVE)
  39. @LazyCollection(LazyCollectionOption.EXTRA)
  40. private Set<Group> groupSet = new HashSet<>();
  41. }