Ich habe 4 Einheiten: Play, Actor, Play-Darstellung und Kategorie. Jedes Stück gehört zu einer Kategorie und Spielrepräsentation assoziiert ein Spiel mit einem Theater und einer Anzahl von Schauspielern zu einer bestimmten Zeit. Hier sind die Entitäten:Hibernate ist keine verschachtelte Beziehung
@Entity
@Table(name = "category")
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@OneToMany(mappedBy="category")
private List<Play> playList = new ArrayList<Play>();
@Entity
@Table(name = "actor")
public class Actor {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "description")
private String description;
@Column(name = "profile_picture")
private String profilePicturePath;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "play_representation_category",
joinColumns = {@JoinColumn(name = "actor_id")},
inverseJoinColumns = {@JoinColumn(name = "play_representation_id")})
private Set<PlayRepresentation> playRepresentations = new HashSet<>(0);
@Entity
@Table(name = "play")
public class Play {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@NotNull
@Column(name = "name")
private String name;
@NotNull
@Column(name = "description")
private String description;
@Column(name = "image_paths")
private String imagePaths;
@NotNull
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Category category;
@Entity
@Table(name = "play_representation")
public class PlayRepresentation {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "play_id")
private Play play;
@OneToOne
@JoinColumn(name = "theater_id")
private Theater theater;
@Column(name = "date")
private Timestamp airingDate;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "play_representation_category",
joinColumns = {@JoinColumn(name = "play_representation_id", nullable=false)},
inverseJoinColumns = {@JoinColumn(name = "actor_id", nullable=false)})
private Set<Actor> actors = new HashSet<>(0);
Das Problem, das ich habe, ist, dass Hibernate versucht, eine Beziehung zwischen play_representation und Kategorie zu finden ! Ich habe versucht, die Beziehung für die Spiele fortzusetzen, aber es scheint, dass ich das falsch verstanden habe und nicht den besten Weg finde, es zu tun ... Es ist übrigens eine postgresql db.
Ich lerne immer noch, also, wenn Sie irgendwelche anderen Tipps bezüglich des Codes haben, den ich geteilt habe, lass es mich wissen!
Edit: Fehler ist:
org.postgresql.util.PSQLException: ERROR: relation "play_representation_category" does not exist
Position: 281
und die Fehlermeldung ist?! –
Ihr ManyToMany ist bidirektional, aber Sie haben 'mappedBy' nicht gesetzt, um sie zu verknüpfen. –