Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.core.jpa.entity;
- import com.common.dto.movie.EditStatus;
- import com.common.dto.movie.MovieType;
- import com.core.jpa.entity.movie.*;
- import lombok.Data;
- import javax.persistence.*;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- @Entity
- @Table(name = "movies")
- @Data
- public class MovieEntity {
- @Id
- @Column(unique = true, updatable = false)
- @GeneratedValue
- private Long id;
- @Column(nullable = false)
- private String title;
- @Column(nullable = false)
- private MovieType type;
- private String description;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieTitle> otherTitles;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieReview> reviews;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieStoryline> storylines;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieBoxOffice> boxOffices;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieReleaseDate> releaseDates;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieSite> sites;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieCountry> countries;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieLanguage> languages;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieGenre> genres;
- @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
- private Set<MovieRating> ratings;
- private String budget;
- @ManyToMany
- @JoinTable(
- name = "movies_celebrities",
- joinColumns = {
- @JoinColumn(name = "movie_id", referencedColumnName = "id")
- },
- inverseJoinColumns = {
- @JoinColumn(name = "celebrity_id", referencedColumnName = "id")
- }
- )
- private List<CelebrityEntity> director;
- @ManyToMany
- @JoinTable(
- name = "movies_celebrities",
- joinColumns = {
- @JoinColumn(name = "movie_id", referencedColumnName = "id")
- },
- inverseJoinColumns = {
- @JoinColumn(name = "celebrity_id", referencedColumnName = "id")
- }
- )
- private List<CelebrityEntity> writer;
- private EditStatus status;
- public MovieEntity() {
- this.otherTitles = new HashSet<>();
- this.reviews = new HashSet<>();
- this.storylines = new HashSet<>();
- this.boxOffices = new HashSet<>();
- this.releaseDates = new HashSet<>();
- this.sites = new HashSet<>();
- this.countries = new HashSet<>();
- this.languages = new HashSet<>();
- this.genres = new HashSet<>();
- this.ratings = new HashSet<>();
- }
- @PrePersist
- protected void onCreateMovieEntity() {
- if(this.status == null) {
- status = EditStatus.WAITING;
- }
- }
- }
Add Comment
Please, Sign In to add comment