Guest User

MovieEntity

a guest
Oct 14th, 2017
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.09 KB | None | 0 0
  1. package com.core.jpa.entity;
  2.  
  3. import com.common.dto.movie.EditStatus;
  4. import com.common.dto.movie.MovieType;
  5. import com.core.jpa.entity.movie.*;
  6. import lombok.Data;
  7.  
  8. import javax.persistence.*;
  9. import java.util.ArrayList;
  10. import java.util.HashSet;
  11. import java.util.List;
  12. import java.util.Set;
  13.  
  14. @Entity
  15. @Table(name = "movies")
  16. @Data
  17. public class MovieEntity {
  18.  
  19.     @Id
  20.     @Column(unique = true, updatable = false)
  21.     @GeneratedValue
  22.     private Long id;
  23.  
  24.     @Column(nullable = false)
  25.     private String title;
  26.  
  27.     @Column(nullable = false)
  28.     private MovieType type;
  29.  
  30.     private String description;
  31.  
  32.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  33.     private Set<MovieTitle> otherTitles;
  34.  
  35.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  36.     private Set<MovieReview> reviews;
  37.  
  38.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  39.     private Set<MovieStoryline> storylines;
  40.  
  41.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  42.     private Set<MovieBoxOffice> boxOffices;
  43.  
  44.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  45.     private Set<MovieReleaseDate> releaseDates;
  46.  
  47.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  48.     private Set<MovieSite> sites;
  49.  
  50.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  51.     private Set<MovieCountry> countries;
  52.  
  53.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  54.     private Set<MovieLanguage> languages;
  55.  
  56.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  57.     private Set<MovieGenre> genres;
  58.  
  59.     @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
  60.     private Set<MovieRating> ratings;
  61.  
  62.     private String budget;
  63.  
  64.     @ManyToMany
  65.     @JoinTable(
  66.             name = "movies_celebrities",
  67.             joinColumns = {
  68.                     @JoinColumn(name = "movie_id", referencedColumnName = "id")
  69.             },
  70.             inverseJoinColumns = {
  71.                     @JoinColumn(name = "celebrity_id", referencedColumnName = "id")
  72.             }
  73.     )
  74.     private List<CelebrityEntity> director;
  75.  
  76.     @ManyToMany
  77.     @JoinTable(
  78.             name = "movies_celebrities",
  79.             joinColumns = {
  80.                     @JoinColumn(name = "movie_id", referencedColumnName = "id")
  81.             },
  82.             inverseJoinColumns = {
  83.                     @JoinColumn(name = "celebrity_id", referencedColumnName = "id")
  84.             }
  85.     )
  86.     private List<CelebrityEntity> writer;
  87.  
  88.     private EditStatus status;
  89.  
  90.     public MovieEntity() {
  91.         this.otherTitles = new HashSet<>();
  92.         this.reviews = new HashSet<>();
  93.         this.storylines = new HashSet<>();
  94.         this.boxOffices = new HashSet<>();
  95.         this.releaseDates = new HashSet<>();
  96.         this.sites = new HashSet<>();
  97.         this.countries = new HashSet<>();
  98.         this.languages = new HashSet<>();
  99.         this.genres = new HashSet<>();
  100.         this.ratings = new HashSet<>();
  101.     }
  102.  
  103.     @PrePersist
  104.     protected void onCreateMovieEntity() {
  105.         if(this.status == null) {
  106.             status = EditStatus.WAITING;
  107.         }
  108.     }
  109. }
Add Comment
Please, Sign In to add comment