====== 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 [[https://hibernate.org/|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 ===== *{{ :pz1:users.csv |}} *{{ :pz1:movies.csv |}} *{{ :pz1:tags.csv |}} *{{ :pz1:ratings.csv |}} ==== 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. {{ :pz1:movielens_schema.png?direct&600 |}} 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 jdbc:h2:~/movielens org.h2.Driver org.hibernate.dialect.H2Dialect 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ń [[https://home.agh.edu.pl/~pszwed/wiki/doku.php?id=pz1:java-movielens#mapowanie| (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 [[https://projectlombok.org/features/|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 ''...'' ===== Mapowanie ===== **[1]** Aby sprawdzić, jak jest zrealizowane mapowanie odkomentujmy w ''hibernate.cfg.xml'' linię create **[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 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 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 [[https://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html| 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 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 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 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 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 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 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.