Movielens

Naszym celem jest wczytanie i zapis do bazy danych zawartości czterech plików w formacie CSV. Pliki pochodzą z serwisu https://grouplens.org/datasets/movielens/ i zawierają informacje o filmach oraz oceny i tagi nadane przez użytkowników. Dane użytkowników nie są dostępne w zbiorze danych movielens, są tam podane jedynie ich id. Informacja o użytkownikach została wygenerowana automatycznie w serwise https://homepage.net/name_generator/

Do komunikacji z bazą danych będziemy używali biblioteki hibernate. Umożliwia ona odwzorowanie obiektów wybranych klas w rekordy relacyjnej bazy danych, automatyczny ich zapis i odczyt. Dotyczy to także relacje (związków) pomiędzy tabelami, które są odwzorowane na relacje pomiędzy klasami.

Pliki z danymi

users

userId,foreName,surName,email
1,Victor,Skinner,victor.skinner@movies.com
2,Boris,Howard,boris.howard@movies.com
3,Richard,Avery,richard.avery@movies.com
4,Simon,Metcalfe,simon.metcalfe@movies.com
5,Robert,Black,robert.black@movies.com
6,Pippa,Lyman,pippa.lyman@movies.com
7,Gordon,Paterson,gordon.paterson@movies.com
8,Angela,Ferguson,angela.ferguson@movies.com
9,Bella,Thomson,bella.thomson@movies.com
10,Stephen,Metcalfe,stephen.metcalfe@movies.com
11,Michael,Ince,michael.ince@movies.com
12,Christopher,Gibson,christopher.gibson@movies.com

movies

movieId,title,genres
1,Toy Story (1995),Adventure|Animation|Children|Comedy|Fantasy
2,Jumanji (1995),Adventure|Children|Fantasy
3,Grumpier Old Men (1995),Comedy|Romance
4,Waiting to Exhale (1995),Comedy|Drama|Romance
5,Father of the Bride Part II (1995),Comedy
6,Heat (1995),Action|Crime|Thriller
7,Sabrina (1995),Comedy|Romance
8,Tom and Huck (1995),Adventure|Children
9,Sudden Death (1995),Action
10,GoldenEye (1995),Action|Adventure|Thriller

Ostatnie pole genres to lista gatunków. Jej elementy są oddzielone pionowymi kreskami. Zbiór nazw jest stały.

ratings

Plik ratings zawiera informacje o użytkowniku, który wystawił ocenę, filmie, wartość oceny (0–5) oraz datę i czas wystawienia oceny jako taimestamp (czas w sekundach od 1 stycznia 1970).

userId,movieId,rating,timestamp
1,1,4.0,964982703
1,3,4.0,964981247
1,6,4.0,964982224
1,47,5.0,964983815
1,50,5.0,964982931
1,70,3.0,964982400
1,101,5.0,964980868
1,110,4.0,964982176
1,151,5.0,964984041
1,157,5.0,964984100

tags

Plik tags zawiera podobne informacje, jak ratings, ale zamiast oceny jest podany tag - słowo kluczowe (termin) za pomocą którego dany użytkownik scharakteryzował film.

userId,movieId,tag,timestamp
2,60756,funny,1445714994
2,60756,Highly quotable,1445714996
2,60756,will ferrell,1445714992
2,89774,Boxing story,1445715207
2,89774,MMA,1445715200
2,89774,Tom Hardy,1445715205
2,106782,drugs,1445715054
2,106782,Leonardo DiCaprio,1445715051
2,106782,Martin Scorsese,1445715056
7,48516,way too long,1169687325

Schemat bazy danych

  • Tabela movies zawiera dane filmów
  • Tabela users zawierają dane użytkowników
  • Tabela movie_genres jest połączona kluczem obcym z movies. Kluczem głównym jest klucz złozony (movie_id, genre)
  • Tabela ratings jest połączona kluczami obcymi z movies i users. Kluczem głównym jest klucz złożony (movie_id,user_id).
  • Tablea tags jest podobnie połączona kluczami obcymi z movies i users. W tym przypadku kluczem głównym jest wygenerowana wartość id.

Schemat ten zostanie wygenerowany automatycznie przez Hibernate na podstawie adnotacji przy klasach encji. Alternatywą jest jawne zdefiniowanie schematu za pomocą komend SQL i odpowiednie odwzorowanie nazw atrybutów w atrybuty klas.

Konfiguracja bazy danych

W projekcie sugeruje się użycie bazy H2 typu Embedded umieszczonej w pliku (np.: ~/movielens.mv.db) ale nie jest to wymagane, może wykorzystać dowolny popularny system zarządzania bazą danych.

W przypadku bazy H2 w pliku łatwo jest usuwać całą zawartość bazy podczas eksperymentów.

[1] W Intelij dodaj i skonfiguruj DataSource (View→Tool Windows→Database). Zainstaluj odpowiedni driver JDBC. Sprawdź połączenie.

[2] Utwórz plik hibernate.cfg.xml - po dodaniu hibernate do projektu można go automatycznie wygenerować. Wprowadź tam informacje o

  • adresie URL połączenia
  • driverze JDBC
  • klasie definiującej dodatkowe cechy SQL (dialekt)
  • w tym miejscu można też podać nazwę użytkownika i hasło
<hibernate-configuration>
  <session-factory>
    <property name="connection.url">jdbc:h2:~/movielens</property>
    <property name="connection.driver_class">org.h2.Driver</property>
    <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
 
 
    <!-- <property name="connection.username"/> -->
    <!-- <property name="connection.password"/> -->
 
<!--      <property name="hibernate.hbm2ddl.auto">create</property>-->
<!--      <property name="hibernate.hbm2ddl.auto">create-drop</property>-->
<!--      <property name="hibernate.hbm2ddl.auto">drop</property>-->
<!--    <property name="hibernate.hbm2ddl.auto">update</property>-->
 
 
  </session-factory>

Własność hibernate.hbm2ddl.auto steruje zmianami w schemacie BD wprowadzanymi przez hibernate. Jeżeli wartość nie będzie ustawiona, wówczas schemat zostanie pozostawiony bez zmian

  • create - generuje schemat
  • create-drop - generuje i usuwa na końcu sesji
  • drop - usuwa
  • update - uaktualnia schemat na podstawie adnotacji

Automatyczna generacja schematu bazy ma pewne wady:

  • czasem nie jest możliwe uaktualnienie, jeżeli zależności są zbyt głębokie - opcja update nie zawsze jest w stanie zmodyfikować ograniczenia CONSTRAINTS.
  • czasem trzeba wykonać drop kilkakrotnie, jeśli są np. zdefiniowane klucze obce. Łatwiej wtedy usunąć plik bazy H2.

:!: Czasem może być wygodne wygenerować schemat bazy danych uruchamiając program, który nie wykonuje żadnych działań (patrz DbSchemaBuilder), a następnie umieścić własność hibernate.hbm2ddl.auto w komentarzu.

Część 1: Klasy encji

Klasy encji umieścimy w pakiecie *.model

User

[1] Klasa User jest zdefiniowana następująco

@Entity
@Table(name="users")
 
public class User {
    @Id
    Long id;
    String forename;
    String surname;
    String email;
}

W przypadku hibernate atrybut pełniący rolę klucza jest obowiązkowy i oznaczony adnotacją @Id.

Poza adnotacjami przetwarzanymi przez hibernate - dla większości klas warto zastosować adnotacje biblioteki lombok, na przykład @Data, @ToString, @AllArgsConstructor, @NoArgsConstructor, @Getter, @Setter. Adnotacje @Data, a zwłąszcza @ToString należy stosowąć rozważnie. W przypadku cyklicznych referencji automatycznie wygenerowany @ToString może wpadać w nieskończoną rekurecję.

[2] Po zdefiniowaniu klasy encji, należy poinformować hibernate, że taka klasa istnieje i ma być odwzorowowana na tabelę bazy dancyh.

W pliku hibernate.cfg.xml dodamy pod wcześniej zdefiniowanymi <property>…<property/>

<mapping class="movielens.model.User"/>

Mapowanie

[1] Aby sprawdzić, jak jest zrealizowane mapowanie odkomentujmy w hibernate.cfg.xml linię

<property name="hibernate.hbm2ddl.auto">create</property>

[2] Dodajmy kod klasy, która otworzy sesję i natychmiast zamknie. Równocześnie zostanie wykonana akcja odpowiadająca akcji wybranej akcji hibernate.hbm2ddl.auto

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
 
public class DbSchemaBuilder {
    static void connectToDb(){
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
        ses.close();
 
    }
    public static void main(String[] args) {
        connectToDb();
    }
}

[3] Klikając prawym klawiszem na plik User można wybrać opcję Show DDL, która wyświetli:

CREATE TABLE users
(
    id       BIGINT NOT NULL,
    forename VARCHAR(255),
    surname  VARCHAR(255),
    email    VARCHAR(255),
    CONSTRAINT pk_users PRIMARY KEY (id)
);

Być może nalezy zainstalować plugin JPA Buddy?

Można także otworzyć konsolę bazy danych (wybierając DataSource w oknie bazy danych) i wykonać polecenie select * from users. Powinna pojawić się pusta tabela.

Movie

Analogicznie [1] dodamy klasę Movie i [2] uzupełnimy hibernate.cfg.xml

@ToString
@Entity
@Table(name="movies")
public class Movie {
    @Id
    private
    Long id;
    private String title;

W zamieszczonym przykładzie metoda toString() zostanie wygenerowana przez lombok.

DDL odpowiadający klasie Movie powinien mieć następującą postać:

CREATE TABLE movies
(
    id    BIGINT NOT NULL,
    title VARCHAR(255),
    CONSTRAINT pk_movies PRIMARY KEY (id)
);

MovieGenre

MovieGenre to gatunek przypisany filmowi.

Pokażmy wpierw DDL

CREATE TABLE movie_genres
(
    movie_id BIGINT       NOT NULL,
    genre    VARCHAR(255) NOT NULL,
    CONSTRAINT pk_movie_genres PRIMARY KEY (movie_id, genre)
);
 
ALTER TABLE movie_genres
    ADD CONSTRAINT FK_MOVIE_GENRES_ON_MOVIE FOREIGN KEY (movie_id) REFERENCES movies (id);
  • Para (movie_id, genre) jest złożonym kluczem głównym
  • movie_id jest kluczem obcym wskazującym na movie

Jedną ze strategii obsługi kluczy złożonych (chyba najczęściej stosowaną) w hibernate jest @Embeddable. Polega ona na:

  • zdefiniowaniu dedykowanej klasy z polami odpowiadającymi składowym klucza złozonego
  • powinna mieć ona konstruktor bezparametrowy
  • powinna mieć metody equals i hashCode
  • może być klasą zagnieżdżoną (statyczną, zdefiniowaną wewnątrz klasy)

[1] Implementacja zamieszczona jest poniżej.

  • W MovieGenre zdefiniowany jest atrybut MovieGenre.MovieGenreId movieGenreId = new MovieGenreId(); z odpowiednią adnotacją @EmbeddedId
  • Proszę zwrócić uwagę na gettery i settery klasy MovieGenre - działają na movieGenreId
  • W klasie MovieGenreId mamy @ManyToOne private Movie movie; To informacja, że wiele obiektów klasy MovieGenre/MovieGenreId może wskazywać jeden film.
@Entity
@Table(name="movie_genres")
public class MovieGenre {
    @Embeddable
    public static class MovieGenreId implements Serializable {
        @ManyToOne
        private Movie movie;
        private String genre;
 
        public MovieGenreId(Movie movie, String genre){
            this.setMovie(movie);
            this.setGenre(genre);
        }
 
        public MovieGenreId() {
 
        }
 
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof MovieGenreId)) return false;
            MovieGenreId other = (MovieGenreId) o;
            return Objects.equals(other.getGenre(), this.getGenre()) &&
                    Objects.equals(this.getMovie(), other.getMovie());
        }
        @Override
        public int hashCode() {
            return Objects.hash(getGenre(), getMovie().getId());
        }
 
 
        public Movie getMovie() {
            return movie;
        }
 
        public void setMovie(Movie movie) {
            this.movie = movie;
        }
 
        public String getGenre() {
            return genre;
        }
 
        public void setGenre(String genre) {
            this.genre = genre;
        }
    }
 
    @EmbeddedId
    MovieGenre.MovieGenreId movieGenreId = new MovieGenreId();
 
    public MovieGenre(Movie movie, String genre) {
        this.setMovie(movie);
        this.setGenre(genre);
    }
 
    public MovieGenre() {
 
    }
 
    public Movie getMovie() {
        return movieGenreId.movie;
    }
 
    public void setMovie(Movie movie) {
        movieGenreId.movie = movie;
    }
 
    public String getGenre() {
        return movieGenreId.genre;
    }
 
    public void setGenre(String genre) {
        movieGenreId.genre = genre;
    }
 
        public String toString(){
        return movieGenreId.getGenre();
    }
 
 
}

[2] Przechodzimy do klasy Movie i dodajemy relację w przeciwną stronę

@Entity
@Table(name="movies")
public class Movie {
    @Id
    private
    Long id;
    private String title;
 
    @OneToMany(mappedBy = "movieGenreId.movie",cascade= CascadeType.ALL, fetch=FetchType.LAZY)
    private
    Set<MovieGenre> genreList = new HashSet<>();
    //...
}

Relacja w przeciwnym kierunku to @OneToMany, a odpowiednią reprezentacją danych jest zbiór Set: Film ma wiele gatunków.

Parametrami adontacji są:

  • atrybut wskazujący w przeciwnym kierunku w MovieGenre
  • opcjonalnie: cascade - co się stanie, jeśli usuniemy obiekt movie z BD - powinniśmy usunąć także obiekty
  • fetch - gdy pobieramy movie z bazy danych, czy od razu z wypełniamy zbiór gatunków (dodając join do kwerendy?) Jeśli LAZY to niekoniecznie, obiekty MovieGenre zostaną pobrane dopiero w momencie iteracji po genreList.

Tag

Odpowiednikiem klasy Tag jest tabela tags. Jej definicja DDL powinna mieć następującą postać:

CREATE TABLE tags
(
    id       BIGINT NOT NULL,
    user_id  BIGINT NOT NULL,
    movie_id BIGINT NOT NULL,
    tag      VARCHAR(255),
    DATE     DATE,
    CONSTRAINT pk_tags PRIMARY KEY (id)
);
 
ALTER TABLE tags
    ADD CONSTRAINT FK_TAGS_ON_MOVIE FOREIGN KEY (movie_id) REFERENCES movies (id);
 
ALTER TABLE tags
    ADD CONSTRAINT FK_TAGS_ON_USER FOREIGN KEY (user_id) REFERENCES users (id);

[1] Zaimplementuj klasę Tag:

@Entity
@Table(name="tags")
public class Tag {
 
    @Id
//    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;
 
    @ToString.Exclude
    @ManyToOne(optional = false)
    User user;
 
    @ToString.Exclude
    @ManyToOne(optional = false)
    Movie movie;
 
    //...
}
  • @ManyToOne(optional = false) odpowiada za ograniczenie NOT NULL
  • W przypadku połączenia hibernate i bazy H2 kod SQL odpowiadający adnotacji @GeneratedValue nie działa (rok 2022/2023). Ale już wewnątrz frameworku Spring działa…
  • Adontacja @ToString.Exclude to informacja dla bibliooteki lombok: przy genercji metody toString() nie należy iść za referencjami tworzącymi cykl Movie→Tag→Movie→Tag→….. stack overflow

[2] Dodaj atrybuty tag i date

[3] Uzupełnij wpis w hibernate.cfg.xml

[4] Dodaj atrybut tags w klasie Movie

@Entity
@Table(name="movies")
public class Movie {
    //...
    @OneToMany(mappedBy = "movie")
    private
    Set<Tag> tags = new HashSet<>();
    //...
}

[5] Analogicznie dodaj atrybut tags w klasie User

Rating

Zaimplementujemy encję Rating ze złożonym kluczem głównym.

Specyfikacja DDL

CREATE TABLE ratings
(
    rating   DOUBLE,
    DATE     DATE,
    user_id  BIGINT NOT NULL,
    movie_id BIGINT NOT NULL,
    CONSTRAINT pk_ratings PRIMARY KEY (user_id, movie_id)
);
 
ALTER TABLE ratings
    ADD CONSTRAINT FK_RATINGS_ON_MOVIE FOREIGN KEY (movie_id) REFERENCES movies (id);
 
ALTER TABLE ratings
    ADD CONSTRAINT FK_RATINGS_ON_USER FOREIGN KEY (user_id) REFERENCES users (id);

Definicja encji

@Entity
@Table(name="ratings")
 
public class Rating  {
 
    @Data
    @Embeddable
    public static class RatingId implements Serializable {
        //.. jak w MovieGenre
    }
    @EmbeddedId
    RatingId ratingId = new RatingId();
 
    void setUser(User user){
        ratingId.setUser(user);
    }
    void setMovie(Movie movie){
        ratingId.setMovie(movie);
    }
 
    double rating;
    Date date;
}

[1] Uaktualnij hibernate.cfg.xml

[2] Dodaj atrybut ratings w klasie Movie

[3] Dodaj odpowiedni atrybut w klasie User

Część 2: Ładowanie danych

Zadeklaruj klasę DBFeeder ze statycznymi metodami:

  • feedUsers
  • feedMovies
  • feedTags
  • feedRatings

feedUsers

Przykładowa implementacja feedUsers():

static void feedUsers() {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
        Transaction t = ses.beginTransaction();
 
        CSVReader reader = null;
        try {
            reader = new CSVReader("users.csv");
            while(reader.next()) {
                User user = new User();
                // ustaw dane za pomocą setterów (wygenerowanych przez lombok)
                ses.save(user);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        t.commit();
        ses.close();
    }

feedMovies

W podobny sposób zaimplemntuj feedMovies, ale podczas czytania wydziel gatunki i uzupełnij zbiór genreList.

feedTags

W pętli odczytaj informacje o tagach. Pobierz z bazy danych obiekty o identyfikatorach movie_id oraz user_id

Movie movie = ses.get(Movie.class,movieId);
User user = (User)ses.get(User.class,userId);

Ustaw referencje, nie zapomnij wygenerować id – jeżeli @GeneratedValue nie działa. Następnie zapisz korzystając z merge

Tag tag = new Tag();
// wypełnij pola
ses.merge(tag);

feedRatings

W pętli odczytaj oceny i zapisz je w bazie danych. Zapisujemy za pomocą merge.

:!: Uwaga - sprawdź, czy daty są poprawnie konwertowane. Problemem może być specyfikacja czasu (w sekundach lub milisekundach od 1970 )

Usuwanie zawartości tabel

Hibernate oferuje język Hibernate Query Language (HQL) pozwalający na wykonywanie kwerend przy użyciu identyfikatorów obiektów i ich atrybutów.

Poniższy kod usunie całą zawartość tabeli ratings

        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
        Transaction t = ses.beginTransaction();
 
        Query query = ses.createQuery("delete Rating"));
        int result = query.executeUpdate();
        if (result > 0) {
            System.out.println("Ratingss were removed");
        }
        t.commit();        
        ses.close();

Napisz funkcję static void deleteAll(), która w odpowiednij kolejności usunie zawartość wszystkich tabel. Możesz napisać funkcję pomiocniczą, która usunie tabelę/Obiekty o danej nazwie i wywołać ją dla kolejnych tabel.

Wykonaj sekwencję:

        deleteAll();
        feedUsers();
        feedMovies();
        feedTags();
        feedRatings();

i sprawdź, czy wszystko działa poprawnie oraz czy tabele są zapełnione danymi (np. wydając polecenia w konsoli bazy danych).

Sprawdź liczbę rekordów

Po załadowaniu danych zdefiniuj w klasie DbFeeder następującą funkcję, która zlicza rekordy.

static void check(){
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
        for(var cls:Arrays.asList("User","Movie","MovieGenre","Tag","Rating")){
            Query query = ses.createQuery("select count(*) from "+cls);
            Long count = (Long)query.uniqueResult();
            System.out.println(String.format("%s:%d",cls,count));
        }
 
        ses.close();
    }

Oczekiwany wynik:

User:610
Movie:9742
MovieGenre:22084
Tag:3683
Rating:100836

Część 3: Kwerendy

Zadeklaruj klasę DbQueries. W niej wpiszesz funkcje realizujące kwerendy. Poniżej przykład kwerendy z języku HQL (ponieważ w tym przypadku realizowany jest wyłącznie odczyt, nie musi być uruchamiana transakcja).

Kwerenda zwraca filmy, których średnia ocena jest powyżej 4.6 i mają co najmniej 5 ocen.

public class DbQueries {
 
    static void sampleQuery(){
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
//        Transaction t = ses.beginTransaction();
        long start = System.nanoTime();
        Query q=ses.createQuery("from Movie m where (select avg(r.rating) from Rating as r where r.ratingId.movie = m group by r.ratingId.movie) >= 4.6 and m.ratings.size >= 5");
        List<Movie> movies=q.list();
        long end = System.nanoTime();
        System.out.println("Czas DB:" + (end-start)/1e6);
        System.out.println(movies.size());
        for(var m:movies) {
            System.out.println(m);
        }
//        t.commit();
        ses.close();
    }
}

Oczekiwany wynik:

Czas DB:1327.9852
5
Movie(id=2239, title=Swept Away (Travolti da un insolito destino nell'azzurro mare d'Agosto) (1975), genreList=[Comedy, Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-11-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-01-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-12-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-03-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-02-13)], tags=[])
Movie(id=4334, title=Yi Yi (2000), genreList=[Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-09-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-04-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2001-11-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2003-03-31), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-05-24)], tags=[])
Movie(id=6460, title="Trial, The (Procès, Le) (1962)", genreList=[Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-10-01), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-03-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-08-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-05-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-03-20)], tags=[])
Movie(id=31364, title=Memories of Murder (Salinui chueok) (2003), genreList=[Drama, Crime, Mystery, Thriller], ratings=[Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-07-31), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2006-10-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-11-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-06-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-06-06)], tags=[])
Movie(id=177593, title="Three Billboards Outside Ebbing, Missouri (2017)", genreList=[Crime, Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-08-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-05-31), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-01-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-04-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-04-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-08-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-06-28)], tags=[])

Alternatywną implementacją jest załadowanie wszystkich danych do pamięci i filtrowanie ich za pomocą standardowych konstrukcji języka.

    static void sampleQueryAsStream(){
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
//        Transaction t = ses.beginTransaction();
        long start = System.nanoTime();
        Query q=ses.createQuery("from Movie");
        List<Movie> movies=q.list();
        movies = movies.stream().filter(m->{
            return
            m.getRatings().stream().mapToDouble(r-> r.getRating()).average().orElse(0.0)>=4.6
            && m.getRatings().size()>=5;}).collect(Collectors.toList());
        long end = System.nanoTime();
        System.out.println("Czas stream:" + (end-start)/1e6);
 
        System.out.println(movies.size());
        for(var m:movies) {
            System.out.println(m);
        }
//        t.commit();
        ses.close();
    }

Oczekiwany wynik

Czas stream:4188.0055
5
Movie(id=2239, title=Swept Away (Travolti da un insolito destino nell'azzurro mare d'Agosto) (1975), genreList=[Drama, Comedy], ratings=[Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-11-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-01-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-12-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-03-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-02-13)], tags=[])
Movie(id=4334, title=Yi Yi (2000), genreList=[Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-09-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-04-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2001-11-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2003-03-31), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-05-24)], tags=[])
Movie(id=6460, title="Trial, The (Procès, Le) (1962)", genreList=[Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-10-01), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-03-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-08-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-05-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-03-20)], tags=[])
Movie(id=31364, title=Memories of Murder (Salinui chueok) (2003), genreList=[Crime, Drama, Mystery, Thriller], ratings=[Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-07-31), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2006-10-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-11-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-06-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-06-06)], tags=[])
Movie(id=177593, title="Three Billboards Outside Ebbing, Missouri (2017)", genreList=[Drama, Crime], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-08-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-05-31), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-01-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-04-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-04-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-08-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-06-28)], tags=[])

Taka implementacja jest na ogół mniej wydajna czasowo ze względu na leniwą strategię ładowania danych.

:!: Uwaga dla nowszych wersji hibernate 6.x ta wersja createQuery() ma status deprecated. Należy podać drugi parametr - zwracany typ.

:!: Należ też użyć w kwerendzie size(m.ratings) >= 5 zamiast m.ratings.size >= 5

static void sampleQuery() {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
        long start = System.nanoTime();
        Query q = ses.createQuery("from Movie m where (select avg(r.rating) from Rating as r where r.ratingId.movie = m group by r.ratingId.movie) >= 4.6 and size(m.ratings) >= 5",Movie.class);
        List<Movie> movies = q.getResultList();
        long end = System.nanoTime();
        System.out.println("Czas DB:" + (end - start) / 1e6);
        System.out.println(movies.size());
        for (var m : movies) {
            System.out.println(m);
        }
        ses.close();
    }

Może mieć to duży wpływ na wyniki dla operacji join

Poniższy kod zwróci listę filmów. Długość listy < 300 (w tym przypadku 30)

static void sampleQueryWithJoin() {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
        long start = System.nanoTime();
        Query q = ses.createQuery("from Movie m inner join Rating r on r.ratingId.movie=m where r.rating = 5",Movie.class);
        q.setMaxResults(300);
        List<Movie> movies = q.getResultList();
        long end = System.nanoTime();
        System.out.println("Czas DB:" + (end - start) / 1e6);
        System.out.println(movies.size());
        for (var m : movies) {
            System.out.println(m);
        }
        ses.close();
    }

Poniższy kod zwróci listę par (podzbiór iloczynu kartezjańskiego filmów i rating) przekazanych jako tablice. Długość listy = 300

 static void sampleQueryWithJoin2() {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session ses = sessionFactory.openSession();
        long start = System.nanoTime();
        Query q = ses.createQuery("from Movie m inner join Rating r on r.ratingId.movie=m where r.rating = 5",Object[].class);
        q.setMaxResults(300);
        List<Object[]> moviesRatings = q.getResultList();
        long end = System.nanoTime();
        System.out.println("Czas DB:" + (end - start) / 1e6);
        System.out.println(moviesRatings.size());
        for (var m : moviesRatings) {
            System.out.println(m[0]);
            System.out.println(((Rating)m[1]).getRating());
        }
        ses.close();
    }

Do napisania

Napisz kwerendy ekstrahujące informacje z bazy danych.

Każdą kwerendę napisz w dwóch wersjach:

  • Z użyciem języka HQL (jak sampleQuery())
  • Ładując wszystkie obiekty danego typu do pamięci i przetwarzając dane za pomocą instrukcji języka Java (jak sampleQueryAsStream())

Mierz czasy wykonania i zestaw je w dołączonym pliku queries.txt

Q1. Wypisz dane 10 użytkowników, którzy wystawili najwięcej ocen

Dodaj w klasie User metodę toString()

    public String toString(){
        StringBuilder b = new StringBuilder();
        b.append(forename);
        b.append(" ");
        b.append(surname);
        b.append(String.format("(%s,id=%d,ratings=%d, tags=%d)",email,id,ratings.size(),tags.size()));
        return b.toString();
    }

Oczekiwany wynik:

10
Evan Ball(evan.ball@movies.com,id=414,ratings=2698, tags=0)
Jason Cornish(jason.cornish@movies.com,id=599,ratings=2478, tags=323)
Diana Greene(diana.greene@movies.com,id=474,ratings=2108, tags=1507)
Richard Hudson(richard.hudson@movies.com,id=448,ratings=1864, tags=0)
Amy Scott(amy.scott@movies.com,id=274,ratings=1346, tags=1)
Rebecca Cornish(rebecca.cornish@movies.com,id=610,ratings=1302, tags=3)
Lauren Miller(lauren.miller@movies.com,id=68,ratings=1260, tags=0)
Ryan Ball(ryan.ball@movies.com,id=380,ratings=1218, tags=0)
Richard Oliver(richard.oliver@movies.com,id=606,ratings=1115, tags=7)
Dominic Lyman(dominic.lyman@movies.com,id=288,ratings=1055, tags=1)

Q2. Wypisz te filmy, które mają 'Drama' na liście gatunków

Wypisz nie więcej niż 100 filmów

100
Movie(id=4, title=Waiting to Exhale (1995), genreList=[Drama, Comedy, Romance], ratings=[Rating(ratingId=Rating.RatingId(), rating=3.0, date=1997-03-19), Rating(ratingId=Rating.RatingId(), rating=1.0, date=1996-08-17), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-07-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-10-17), Rating(ratingId=Rating.RatingId(), rating=2.0, date=1996-06-23), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-06-22), Rating(ratingId=Rating.RatingId(), rating=1.5, date=2009-03-22)], tags=[])
Movie(id=11, title="American President, The (1995)", genreList=[Drama, Comedy, Romance], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-07-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-08-29), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-11-20), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2012-07-21), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2007-03-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-08-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-08-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-05-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-09-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2005-02-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-05-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-10-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-08-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-03-19), Rating(ratingId=Rating.RatingId(), rating=2.0, date=1996-11-01), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2003-05-15), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1999-11-02), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-01-02), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-06-08), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2003-05-05), Rating(ratingId=Rating.RatingId(), rating=1.5, date=2012-04-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2009-11-17), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2001-05-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-11-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-09-20), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-08-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-02-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-03-15), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-06-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2008-09-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-02-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-08-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-06-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-09-26), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-07-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-05-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2006-09-18), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-08-24), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2001-01-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-09-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-04-12), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1998-03-29), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-10-10), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2005-05-30), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2001-11-12), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-08-30), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-11-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-06-23), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-09-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-06), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-10-01), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-08-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-06-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-11-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-11-10), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-07-28), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2018-03-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-11-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-07-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-07-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-10-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-07-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-11-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2004-11-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2005-01-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-11-03), Rating(ratingId=Rating.RatingId(), rating=2.0, date=1999-10-11), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-06-10)], tags=[Tag(id=986, tag=politics, date=2006-01-16), Tag(id=987, tag=president, date=2006-01-16)])
Movie(id=14, title=Nixon (1995), genreList=[Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-09-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-08-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-08-24), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1997-03-30), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-01-28), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-12-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-12-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-05-14), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1997-04-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-01-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-03-06), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-09-16), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1997-05-18), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-02-19), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2005-07-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-12-16), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-06-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-01-08)], tags=[Tag(id=988, tag=politics, date=2006-01-16), Tag(id=989, tag=president, date=2006-01-16)])
Movie(id=16, title=Casino (1995), genreList=[Drama, Crime], ratings=[Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-08-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-07-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-11-10), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2008-09-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-11-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-04-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-07-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-09-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-10-11), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2006-02-28), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-10-26), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2004-09-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-01-21), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2003-05-19), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2005-04-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2004-11-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-10-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1999-12-12), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-09-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-06), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2010-10-01), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-06-07), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2004-06-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-12-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-10-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-08-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-07-04), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-01-03), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-09-18), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-06-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-02-14), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-11-20), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-01-15), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-12-23), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-03-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-01-25), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-09-25), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-03-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-07-03), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2005-08-13), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-10-16), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-09-06), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2005-03-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-07-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-04-17), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2004-03-07), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2003-07-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-05-04), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2006-03-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-08-02), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2009-02-14), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2005-01-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2006-10-22), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-11-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2003-06-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-11-01), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-05-15), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-03-30), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-10-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-11-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-09-16), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-08-06), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-04-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2008-08-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-05-16), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-05-21), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-09-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-04-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-10-17), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-08-10), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-11-19), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-05-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-02-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-05-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2014-07-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-05-18), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-11-27), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-06-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-16)], tags=[Tag(id=990, tag=Mafia, date=2006-01-13)])
Movie(id=17, title=Sense and Sensibility (1995), genreList=[Drama, Romance], ratings=[Rating(ratingId=Rating.RatingId(), rating=2.0, date=1997-05-29), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-03-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-10-01), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2009-03-22), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-01-28), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-01-30), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-03-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-09-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-11-19), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-08-29), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-04-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1999-12-22), Rating(ratingId=Rating.RatingId(), rating=1.0, date=1997-05-27), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-12-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-09-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-11-26), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-03-31), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2005-04-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-05-14), Rating(ratingId=Rating.RatingId(), rating=0.5, date=2017-02-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-06-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-11-11), Rating(ratingId=Rating.RatingId(), rating=1.0, date=1996-09-22), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1997-01-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2005-02-21), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2003-06-02), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-02-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-04-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-12-16), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-09-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-14), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2006-09-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2003-03-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-05-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-01-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-10-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-05-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1999-10-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-01-15), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-03-26), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-07-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-10-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-07-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-03-30), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-08-17), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-02-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-02-18), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2002-10-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2004-11-11), Rating(ratingId=Rating.RatingId(), rating=0.5, date=2017-12-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-01-24), Rating(ratingId=Rating.RatingId(), rating=1.0, date=1999-12-12), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-12-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-11-28), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2009-11-17), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1999-10-19), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-10-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-08-08), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-09-18), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1999-10-20), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-04-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-09-26), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1998-03-29), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-07-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-06-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-06-20)], tags=[Tag(id=991, tag=Jane Austen, date=2006-01-13)])
Movie(id=20, title=Money Train (1995), genreList=[Drama, Thriller, Action, Crime, Comedy], ratings=[Rating(ratingId=Rating.RatingId(), rating=2.0, date=2000-04-17), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-02-18), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2009-09-10), Rating(ratingId=Rating.RatingId(), rating=1.0, date=1996-10-10), Rating(ratingId=Rating.RatingId(), rating=2.0, date=1996-09-13), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2011-11-25), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2002-04-18), Rating(ratingId=Rating.RatingId(), rating=2.0, date=1996-08-06), Rating(ratingId=Rating.RatingId(), rating=2.0, date=1996-12-26), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2002-05-23), Rating(ratingId=Rating.RatingId(), rating=1.0, date=1996-05-21), Rating(ratingId=Rating.RatingId(), rating=1.5, date=2017-06-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2008-09-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2010-06-03), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-12-13)], tags=[])
Movie(id=22, title=Copycat (1995), genreList=[Horror, Thriller, Mystery, Drama, Crime], ratings=[Rating(ratingId=Rating.RatingId(), rating=3.5, date=2003-09-15), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2004-09-20), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-11-01), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-01-30), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2018-08-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2002-12-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-10-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-06-24), Rating(ratingId=Rating.RatingId(), rating=2.0, date=1998-07-19), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2005-04-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-11-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-06-23), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2003-03-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-11-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-04-18), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-02-18), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-06-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-01-03), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-06-10), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2005-03-22), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-03-29), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-10-11), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-10-23), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-02-21), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-08-24), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2000-10-13), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2007-08-03), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-10-16), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-03-29), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-05-13), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-08-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-04-17), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-09-13), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-05-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-06-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-07-27)], tags=[Tag(id=993, tag=serial killer, date=2006-01-16)])
Movie(id=24, title=Powder (1995), genreList=[Sci-Fi, Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-11-24), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2000-10-03), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-06-19), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2009-03-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-29), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2002-10-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-07-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-01-24), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2012-01-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-09-20), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-02-18), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1996-10-17), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2005-05-31), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2007-08-03), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2002-12-08), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2018-02-14), Rating(ratingId=Rating.RatingId(), rating=2.0, date=1997-05-27), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-10-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-04-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2003-01-17), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2003-08-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1997-02-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-10-30), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1999-11-03), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2000-01-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-01-07), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2003-06-29)], tags=[])

Q3. Wypisz te filmy, które otagował Richard Oliver

Użyj konstrukcji join. Zwrócona zostanie lista tablica obiektów (w kolejności dołączania), a więc movies[i][0] będzie filmem…

    Query q=ses.createQuery("from Movie as m join m.tags as tags join ... ");
    List<Object[]> movies=q.list();

Oczekiwany wynik:

7
Movie(id=1357, title=Shine (1996), genreList=[Drama, Romance], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2002-08-31), Rating(ratingId=Rating.RatingId(), rating=0.5, date=2011-08-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-10-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-03-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-11-03), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-07-29), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-02-22), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1998-03-09), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2003-06-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2004-05-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-06-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-01-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-06-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-01-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-09-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2009-07-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2004-09-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-11-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-01-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1997-02-19), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2005-02-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2004-07-09)], tags=[Tag(id=3673, tag=music, date=2007-04-17)])
Movie(id=1948, title=Tom Jones (1963), genreList=[Comedy, Romance, Adventure], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2002-12-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-03-15), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-04-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2001-09-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-11-26), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-01-02), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2010-02-17)], tags=[Tag(id=3674, tag=British, date=2007-04-25)])
Movie(id=3578, title=Gladiator (2000), genreList=[Action, Adventure, Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-05-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2005-01-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-05-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2014-02-07), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-05-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-03-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-01-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2013-05-18), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2000-11-27), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2005-01-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2002-09-03), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2008-09-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-11-19), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-19), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-02-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-05-01), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-11-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-08-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-02-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-07-03), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-08-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-09-28), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-03-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2010-06-03), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-10-21), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-08-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-11-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-07-01), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2002-10-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-09-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-07-04), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2004-05-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-08-19), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-08-28), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2005-01-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-18), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-08-28), Rating(ratingId=Rating.RatingId(), rating=0.5, date=2017-09-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2010-03-05), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-09-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-04-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2005-02-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2009-02-13), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2008-03-07), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2014-02-02), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-11-15), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-05-01), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-12-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-10-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-09-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-07-28), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-09-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-18), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2009-11-17), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2017-02-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2004-09-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-09-18), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2001-07-27), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2018-08-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-11-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2010-04-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-04-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-12-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-10-03), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2002-08-31), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2007-11-29), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-01-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-07-18), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-12-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-03-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2003-05-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2010-10-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-05-16), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2002-03-06), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-01-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-13), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2004-08-29), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-11-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-05-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-09-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-05-30), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2006-12-29), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-09-26), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2005-03-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-05-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-08-07), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2003-06-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2006-12-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2010-03-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-02-28), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2001-12-30), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2006-01-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-04-29), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-06-27), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2008-01-20), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2008-10-29), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-07-30), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-11-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-09-06), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2001-03-12), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-03-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2002-04-18), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-05-29), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-09-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-06-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-10-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-07-03), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2015-07-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2010-11-29), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2011-09-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-10-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-07-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-04-25), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2005-02-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-09-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-11-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-06-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-10-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-12-03), Rating(ratingId=Rating.RatingId(), rating=1.5, date=2017-03-01), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2010-09-12), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2004-09-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-06-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-11-03), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2005-03-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-06-21), Rating(ratingId=Rating.RatingId(), rating=1.5, date=2005-01-25), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-08-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-03-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-05-31), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-05-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-01-01), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-11-11), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-08-08), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2016-01-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2008-05-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-12-21), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-04-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-07-09), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2001-09-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2014-01-19), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-09-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-08-02), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2005-04-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-10-27), Rating(ratingId=Rating.RatingId(), rating=0.5, date=2012-03-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-02-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2005-05-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2007-06-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-06-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2002-02-11), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-02-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-04-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-06-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-11-19), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-07-04), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2006-10-26), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2015-01-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2007-06-27), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2006-01-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-02-11), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2005-06-23)], tags=[Tag(id=77, tag=revenge, date=2018-06-05), Tag(id=74, tag=Epic, date=2018-06-05), Tag(id=75, tag=history, date=2018-06-05), Tag(id=78, tag=Rome, date=2018-06-05), Tag(id=79, tag=Russell Crowe, date=2018-06-05), Tag(id=73, tag=ancient Rome, date=2018-06-05), Tag(id=76, tag=imdb top 250, date=2018-06-05), Tag(id=3675, tag=Romans, date=2007-03-06)])
Movie(id=5694, title=Staying Alive (1983), genreList=[Musical, Comedy, Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=1.5, date=2004-06-21), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2007-03-04)], tags=[Tag(id=3676, tag=70mm, date=2007-04-04)])
Movie(id=6107, title="Night of the Shooting Stars (Notte di San Lorenzo, La) (1982)", genreList=[Drama, War], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-02-13)], tags=[Tag(id=3677, tag=World War II, date=2007-05-06)])
Movie(id=7382, title=I'm Not Scared (Io non ho paura) (2003), genreList=[Thriller, Drama, Mystery], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2005-08-11), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-02-11)], tags=[Tag(id=2276, tag=adolescence, date=2006-01-23), Tag(id=2277, tag=crime, date=2006-01-23), Tag(id=3678, tag=for katie, date=2007-02-11)])
Movie(id=7936, title=Shame (Skammen) (1968), genreList=[Drama, War], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-04-30)], tags=[Tag(id=3679, tag=austere, date=2007-03-08)])

Q4. Wypisz filmy z tagiem Leonardo DiCaprio

Oczekiwany wynik:

9
Movie(id=147, title="Basketball Diaries, The (1995)", genreList=[Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=3.0, date=2009-05-29), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-08-06), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-05-14), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2009-05-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-03-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-05-21), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2007-08-02), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-03-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-06-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2014-07-09), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-05-31), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2018-02-20), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2006-07-31), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-04-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-03-11)], tags=[Tag(id=705, tag=heroin, date=2016-03-13), Tag(id=707, tag=Mark Wahlberg, date=2016-03-13), Tag(id=704, tag=addiction, date=2016-03-13), Tag(id=706, tag=Leonardo DiCaprio, date=2016-03-13)])
Movie(id=1059, title=William Shakespeare's Romeo + Juliet (1996), genreList=[Drama, Romance], ratings=[Rating(ratingId=Rating.RatingId(), rating=3.0, date=1996-11-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2012-02-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-05-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-01-22), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-08-28), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2000-10-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2014-11-10), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-09-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2004-11-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2001-12-26), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2014-02-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-07-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2000-10-15), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-07-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-06-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1997-01-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-10-23), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2005-03-07), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-09-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2000-06-20), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2005-05-30), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-03-26), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2006-01-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2002-08-31), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-06-29), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-02-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=1996-12-15), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2004-11-10), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2012-05-16), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2014-11-29), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-02-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=1999-10-12), Rating(ratingId=Rating.RatingId(), rating=3.0, date=1999-12-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2004-09-13)], tags=[Tag(id=653, tag=shakespeare, date=2012-09-26), Tag(id=651, tag=Amazing Cinematography, date=2012-09-26), Tag(id=1272, tag=Shakespeare, date=2006-01-13), Tag(id=652, tag=Leonardo DiCaprio, date=2012-09-26), Tag(id=654, tag=updated classics, date=2012-09-26)])
Movie(id=5989, title=Catch Me If You Can (2002), genreList=[Drama, Crime], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-03-11), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-04-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2005-01-25), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-11-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2014-07-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2007-05-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-08-21), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-07-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2005-06-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-04-30), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2007-06-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-04-02), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2009-01-21), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2004-05-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-08-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2003-01-17), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2003-12-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-12-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-09-06), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-06-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-08-22), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2018-08-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2009-09-28), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-12-11), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2014-11-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2004-06-21), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-08-18), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2017-05-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-05-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-09-11), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2018-08-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-06-18), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-03-30), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-01-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-09-26), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2005-03-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-01-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-07-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-05-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-01-16), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-09-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-05-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-01-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-03-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-07-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-08-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-03-05), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-10-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-11-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-02-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-02-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-01-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-11-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2004-11-11), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2008-02-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2010-04-07), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2005-04-05), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2009-08-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-09-25), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-12-13), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2005-03-07), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2009-11-17), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-09-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-08-19), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2003-05-27), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-09-25), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-11-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2003-07-28), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2014-02-02), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2009-03-06), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-09-25), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2011-12-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2010-10-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2006-11-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-01-26), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2006-11-02), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-03-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-12-25), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2011-01-25), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-09-07), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2008-12-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-09), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2005-01-13), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-11-08), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-06-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2009-01-01), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-02-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-02), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2017-02-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-11-08), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-08-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-01-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-02-14), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-12-23), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-05-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-09-11), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-09-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-08-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-03-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2003-06-30), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-08-03), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-01-17), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-19), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-05-03), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2008-12-21), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-07-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-01-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2003-12-22)], tags=[Tag(id=2802, tag=smart, date=2015-02-17), Tag(id=2798, tag=cheating, date=2015-02-17), Tag(id=2049, tag=crime, date=2006-01-23), Tag(id=2799, tag=intelligent, date=2015-02-17), Tag(id=2803, tag=Tom Hanks, date=2015-02-17), Tag(id=2804, tag=twists & turns, date=2015-02-17), Tag(id=2801, tag=lies, date=2015-02-17), Tag(id=2800, tag=Leonardo DiCaprio, date=2015-02-17)])
Movie(id=48516, title="Departed, The (2006)", genreList=[Crime, Drama, Thriller], ratings=[Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-11-25), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-05-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-10-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-10-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-08-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-01-08), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-01-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-12-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-02-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-03-11), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-08-07), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2008-02-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-04-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-01-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-04-30), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-04-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-03-07), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2010-06-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-11-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2009-11-17), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-11-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2008-02-03), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-04-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2009-02-16), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2009-02-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-08-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2007-05-29), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-07-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-09-04), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-09-06), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-07-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2008-04-06), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-02-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-19), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-03-13), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2007-01-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2006-10-30), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2014-02-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2007-09-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2010-04-07), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2007-02-23), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2010-03-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-03-19), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-10-22), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2006-10-12), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-06-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-05-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2011-06-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-05-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-01-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2009-12-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2007-08-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-06-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2007-05-28), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-07-04), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2008-05-21), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-02-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-07-01), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-12-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-12-18), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2011-06-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-10-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2014-02-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-11-06), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-03-30), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-10-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2012-02-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-04-23), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-12-23), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-05-01), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-10-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-07-21), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-05-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-06-28), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-06-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-01-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-09-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-10-14), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2011-09-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-07-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-01-21), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-09-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-01-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2006-11-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2009-09-19), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-06-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-09-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2008-09-11), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-05-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2006-11-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-09-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-09-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-11-19), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2008-08-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-05-26), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-11-10)], tags=[Tag(id=674, tag=Leonardo DiCaprio, date=2012-09-26), Tag(id=901, tag=Martin Scorsese, date=2016-03-13), Tag(id=899, tag=Jack Nicholson, date=2016-03-13), Tag(id=902, tag=suspense, date=2016-03-13), Tag(id=675, tag=suspense, date=2012-09-26), Tag(id=677, tag=undercover cop, date=2012-09-26), Tag(id=898, tag=atmospheric, date=2016-03-13), Tag(id=900, tag=Leonardo DiCaprio, date=2016-03-13), Tag(id=676, tag=twist ending, date=2012-09-26), Tag(id=9, tag=way too long, date=2007-01-25)])
Movie(id=49530, title=Blood Diamond (2006), genreList=[War, Adventure, Action, Crime, Thriller, Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-08-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2009-10-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-04-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-12-21), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-07-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-10-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-06-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2008-09-11), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2010-12-28), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-09-26), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-05-01), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-07-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-09-06), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-09-04), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2018-08-31), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2009-01-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-06-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2006-12-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-09-16), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-03-30), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2017-05-08), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-05-14), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2007-06-10), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2007-04-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2008-03-15), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-09-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2010-02-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-11-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-09-17), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-07-14), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-05-03), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2009-02-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-05-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-02-23), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-04-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-08-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-05-29), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2014-02-07), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-08-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2007-08-08), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2011-09-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2007-12-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-06-28), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-09-23), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2009-03-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-09-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2008-05-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-18)], tags=[Tag(id=184, tag=Jennifer Connelly, date=2018-09-13), Tag(id=185, tag=justice, date=2018-09-13), Tag(id=186, tag=Leonardo DiCaprio, date=2018-09-13), Tag(id=183, tag=corruption, date=2018-09-13), Tag(id=182, tag=Africa, date=2018-09-13)])
Movie(id=74458, title=Shutter Island (2010), genreList=[Mystery, Drama, Thriller], ratings=[Rating(ratingId=Rating.RatingId(), rating=1.0, date=2016-01-27), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-11-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-08-29), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-10-01), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2011-12-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-08-28), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-10), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2012-10-22), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-06-28), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2011-09-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-10-24), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2015-11-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2010-02-22), Rating(ratingId=Rating.RatingId(), rating=0.5, date=2015-05-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-11-06), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-05-26), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-04-28), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-04-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-06-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-05-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-07-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-05-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-08-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-07-04), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2012-07-14), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-11-19), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-09-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-26), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-04-08), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-03-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-07-09), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-04-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-12-19), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-02-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-04-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-09-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-08-31), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2010-12-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2012-03-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-10-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-05), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-09-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-09-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-05-14), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2018-05-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-03-19), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-01-16), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-04-07), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-07-30), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-08-18), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-07-14), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-02-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-07-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-08-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-06-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2014-02-02), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-25), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-07-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-06-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-10-14), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2018-06-25)], tags=[Tag(id=927, tag=Psychological Thriller, date=2016-03-13), Tag(id=925, tag=plot twist, date=2016-03-13), Tag(id=926, tag=psychological, date=2016-03-13), Tag(id=923, tag=Leonardo DiCaprio, date=2016-03-13), Tag(id=924, tag=Martin Scorsese, date=2016-03-13), Tag(id=928, tag=thought-provoking, date=2016-03-13), Tag(id=922, tag=insanity, date=2016-03-13)])
Movie(id=79132, title=Inception (2010), genreList=[Drama, Mystery, Action, Thriller, Sci-Fi, IMAX, Crime], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-01-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-12-14), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-04-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-09-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-01-03), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-09-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2013-05-18), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-12-20), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-07-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-07-01), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-11-06), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-09-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-02-12), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2015-01-16), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-07-21), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2015-04-15), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-05-03), Rating(ratingId=Rating.RatingId(), rating=1.5, date=2016-12-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-03-27), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2014-02-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2014-07-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2010-09-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-07-31), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-02-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-09-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-08-30), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-11-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-10-22), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2017-08-03), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2015-04-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-10), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-08-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2010-08-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2011-01-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-10-10), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-09-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-07-18), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-07-31), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-09-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2010-08-16), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2017-12-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-03-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-08-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-10-20), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-05-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-04-30), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-04-02), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2011-07-21), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-09-25), Rating(ratingId=Rating.RatingId(), rating=1.5, date=2017-03-01), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2015-10-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2010-08-07), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-18), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2013-08-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-04-28), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2018-05-02), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-06-28), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2011-09-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-10-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-01-26), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2016-01-27), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-07-04), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2016-05-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-02-17), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-03-11), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-03-05), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-08-10), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-07-04), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-09-16), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-10-22), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-10-22), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-12-18), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2016-03-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-08-04), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-11-14), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-06-24), Rating(ratingId=Rating.RatingId(), rating=1.5, date=2017-05-08), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-04-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-08-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-03-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-04), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-04-23), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-10-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-02-24), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-05-18), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2012-11-25), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2011-03-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-11-11), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2012-02-23), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-09-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-04-29), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-06-05), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2012-04-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-07-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-04-25), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-02-17), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-04-02), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-05-03), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-05-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-11-08), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-02-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-09-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-11-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-09-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-22), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-03-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-03-03), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-07-24), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2018-08-24), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2010-08-30), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-10-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-03-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-07-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-09-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-12-20), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2011-05-18), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-02-05), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-11-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-07-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-10-31), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2011-06-09), Rating(ratingId=Rating.RatingId(), rating=0.5, date=2016-03-30), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-05-26), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2011-11-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2012-01-08), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-05-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-02-21), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2012-03-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2011-03-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-01-05), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-05-15), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2010-10-01)], tags=[Tag(id=930, tag=alternate reality, date=2016-03-13), Tag(id=2830, tag=clever, date=2015-02-17), Tag(id=931, tag=Leonardo DiCaprio, date=2016-03-13), Tag(id=2755, tag=dreamlike, date=2010-07-31), Tag(id=2834, tag=heist, date=2015-02-17), Tag(id=2831, tag=complicated, date=2015-02-17), Tag(id=2756, tag=surreal, date=2010-07-31), Tag(id=2757, tag=visually appealing, date=2010-07-31), Tag(id=2839, tag=psychology, date=2015-02-17), Tag(id=2837, tag=philosophy, date=2015-02-17), Tag(id=3160, tag=dreamlike, date=2018-05-02), Tag(id=2840, tag=suspense, date=2015-02-17), Tag(id=934, tag=visually appealing, date=2016-03-13), Tag(id=2829, tag=big budget, date=2015-02-17), Tag(id=3159, tag=cerebral, date=2018-05-02), Tag(id=3161, tag=philosophy, date=2018-05-02), Tag(id=2838, tag=psychological, date=2015-02-17), Tag(id=2841, tag=thought-provoking, date=2015-02-17), Tag(id=929, tag=action, date=2016-03-13), Tag(id=2836, tag=mindfuck, date=2015-02-17), Tag(id=2832, tag=dead wife, date=2015-02-17), Tag(id=3162, tag=thought-provoking, date=2018-05-02), Tag(id=932, tag=sci-fi, date=2016-03-13), Tag(id=2833, tag=great soundtrack, date=2015-02-17), Tag(id=2835, tag=intellectual, date=2015-02-17), Tag(id=933, tag=thought-provoking, date=2016-03-13)])
Movie(id=99114, title=Django Unchained (2012), genreList=[Action, Western, Drama], ratings=[Rating(ratingId=Rating.RatingId(), rating=3.0, date=2012-12-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-03-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-07-28), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-05-26), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-11-14), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2018-05-05), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-01-05), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-10-20), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-06-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-09-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-11-14), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-12-14), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-01-15), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-05-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-02-17), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-02-06), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-05-18), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-10-22), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2014-12-29), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2013-08-21), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2014-07-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-26), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-07-04), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-07-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2014-11-10), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-12-27), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-03-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-01), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-01-16), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2016-04-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-05-03), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-06-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-05-08), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2017-11-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-02-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-03-05), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-09-20), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2016-01-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-03-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-10-24), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-09-09), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2013-02-22), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-11-06), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-07-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-02-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2013-02-28), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2018-05-22), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-06-28), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-02), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-03-03), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-05-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-08-10), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-12-25), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-04-02), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-01-29), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2016-04-04), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2016-07-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-12-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2014-02-02), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-03-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-09-17), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2017-10-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-11-12), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-03-19), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-03-21), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-25)], tags=[Tag(id=259, tag=Quentin Tarantino, date=2018-05-12), Tag(id=257, tag=Humour, date=2018-05-12), Tag(id=261, tag=Soundtrack, date=2018-05-12), Tag(id=254, tag=funny, date=2018-05-12), Tag(id=258, tag=Leonardo DiCaprio, date=2018-05-12), Tag(id=256, tag=Great performances, date=2018-05-12), Tag(id=255, tag=good soundtrack, date=2018-05-12), Tag(id=252, tag=action, date=2018-05-12), Tag(id=262, tag=western, date=2018-05-12), Tag(id=2872, tag=Soundtrack, date=2015-02-17), Tag(id=260, tag=Samuel L. Jackson, date=2018-05-12), Tag(id=253, tag=Christoph Waltz, date=2018-05-12)])
Movie(id=106782, title="Wolf of Wall Street, The (2013)", genreList=[Comedy, Drama, Crime], ratings=[Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-03-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-10-20), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2014-02-02), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-02-17), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-01-29), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-08-07), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2018-09-17), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-05-01), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-12-06), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2014-09-13), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2014-01-28), Rating(ratingId=Rating.RatingId(), rating=2.5, date=2018-06-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-04-08), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2018-05-05), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-09-20), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-12-25), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-09-09), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2015-01-10), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2017-06-27), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-11-11), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-09-16), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2018-05-22), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-25), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-05-31), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-04-09), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-11-03), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-11-19), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2016-03-22), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2014-02-07), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2015-10-24), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-03-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-03-13), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-27), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2018-05-18), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2018-08-12), Rating(ratingId=Rating.RatingId(), rating=2.0, date=2017-10-22), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2017-03-18), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2017-08-19), Rating(ratingId=Rating.RatingId(), rating=0.5, date=2016-01-27), Rating(ratingId=Rating.RatingId(), rating=3.5, date=2015-11-14), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2015-11-15), Rating(ratingId=Rating.RatingId(), rating=1.0, date=2016-02-13), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-12-23), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2016-08-13), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2014-06-22), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-09-19), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2017-03-04), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2015-12-02), Rating(ratingId=Rating.RatingId(), rating=3.0, date=2016-11-06), Rating(ratingId=Rating.RatingId(), rating=4.0, date=2016-07-04), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-06-18), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2016-05-25), Rating(ratingId=Rating.RatingId(), rating=5.0, date=2018-01-16), Rating(ratingId=Rating.RatingId(), rating=4.5, date=2017-01-26)], tags=[Tag(id=2884, tag=Wall Street, date=2015-02-17), Tag(id=2883, tag=Stock Market, date=2015-02-17), Tag(id=7, tag=Leonardo DiCaprio, date=2015-10-24), Tag(id=6, tag=drugs, date=2015-10-24), Tag(id=8, tag=Martin Scorsese, date=2015-10-24)])

Q5. Wypisz ile ocen (ratings) wystawiono w kolejnych latach

Podobnie, jak dla join, kwerenda z listą pól oddzielonych przecinkami zwraca listę tablic obiektów, które można zrzutować na odpowiednie typu (lub wydrukować licząc na funkcję toString).

Oczekiwany wynik:

23
1996 6040
1997 1916
1998 507
1999 2439
2000 10061
2001 3922
2002 3478
2003 4014
2004 3279
2005 5813
2006 4059
2007 7114
2008 4351
2009 4158
2010 2301
2011 1690
2012 4656
2013 1664
2014 1439
2015 6616
2016 6703
2017 8198
2018 6418

Punktacja

  • Klasy encji - 10 pkt
  • DbFeeder - 10 pkt.
  • DbQueries - 20 pkt.
pz1/java-movielens.txt · Last modified: 2023/11/06 01:04 by pszwed
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0