Hier ist, wie ich meine Datenbank zu erstellen:JPA viele zu viele
CREATE TABLE actor(id INT PRIMARY KEY, name VARCHAR(255));
CREATE TABLE movie(id INT PRIMARY KEY, title VARCHAR(255), release_date VARCHAR(255), duration INT, type VARCHAR(255), director VARCHAR(255), category VARCHAR(255));
CREATE TABLE movie_actor(movie_id INT NOT NULL, actor_id INT NOT NULL);
Und hier ist mein Java-Code:
@Entity
public class Actor {
@Id
private Integer id;
private String name;
@ManyToMany(mappedBy="actorList")
private List<Movie> movieList = new ArrayList<Movie>();
//getters and setters
}
und zweiter Klasse.
@Entity
public class Movie {
@Id
private int id;
private String title;
private String releaseDate;
private int duration;
private String type;
private String director;
@ManyToMany()
@JoinTable(name = "movie_actor", joinColumns = @JoinColumn(name = "movie_id"), inverseJoinColumns = @JoinColumn(name = "actor_id"))
private List<Actor> actorList = new ArrayList<Actor>();
@Enumerated(EnumType.STRING)
private MovieCategory category;
//getters and setters
}
Repositorys:
@Repository
public interface MovieRepository extends JpaRepository<Movie, Integer> {
}
@Repository
public interface ActorRepository extends JpaRepository<Actor, Integer> {
}
Jemand hat vielleicht eine Ahnung, was ich hier falsch mache? Weil es nicht funktioniert. Ich kann keine Filme mit .findAll()
bekommen.
@edit
Kann ich nur OneToMany
in Movies
verwenden und alle adnotations in Actor
ignorieren? Auf diese Weise funktioniert es, aber ich habe keine Ahnung, ob es korrekt ist. Ich möchte nur Filme mit Schauspielerliste anzeigen, ich brauche es nicht auf andere Weise. Aber in einem Film kann man viele Schauspieler spielen, und jeder Schauspieler kann in vielen Filmen spielen, also dachte ich, es sollte ManyToMany sein.
wo ist dein Debugging? wie die SQL, die vom JPA-Provider aufgerufen wird, um zu sehen, was mit den Abfragen oder der Schemazuordnung nicht stimmt? –