簡體   English   中英

Hibernate沒有持久的嵌套關系

[英]Hibernate is not persisting nested relationship

我有4個實體:播放,演員,播放表示和類別。 每個戲劇都屬於一個類別,並且戲劇表示將給定時間的戲劇與劇院和許多演員相關聯。 以下是實體:

@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);

我遇到的問題是休眠狀態正在嘗試找到play_representation和category之間的關系! 我一直在努力保持戲劇的關系,但似乎我錯了,無法找出最好的方法...順便說一下,這是一個PostgreSQL數據庫。

我仍在學習中,因此,如果您有關於我分享的代碼的其他提示,請告訴我!

編輯:錯誤是:

org.postgresql.util.PSQLException: ERROR: relation "play_representation_category" does not exist
  Position: 281

我不需要mappedBy,它實際上是一個錯字-我寫了play_representation_category而不是play_representation_actors。 太傻了吧? 至少我終於找到了它:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM