簡體   English   中英

沒有聯接表的單向一對多關系

[英]unidirectional one-to-many relation without join table

@Entity
@Table
public class Book {

    @Id @GeneratedValue @Column private Long bookId;

    @Column private String name;

    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinColumn(name="bookId")
    private List<Chapter> chapters=new ArrayList<Chapter>();
.....

@Entity
@Table
public class Chapter {

    @Id @Column @GeneratedValue
    private Long cid;

    @Column private String name;

    @Column private Long bookId;
....

我應該在Chapter.bookId中使用什么注釋來引用Book.bookId,以便在插入新的Book時,Chapter.bookid將采用Book.bookId的生成值。

    Book bk=new Book();
    bk.setName("b1");

    Chapter ch=new Chapter();
    ch.setName("b1c1");
    bk.getChapters().add(ch);

我收到此錯誤休眠:插入Book(名稱)值(?)休眠:插入章節(bookId,名稱)值(?,?)19:56:59,094錯誤JDBCExceptionReporter:234-列'bookId'不能為null

你必須設置Chapter.bookId自己或更改參考ChapgterLongBook ,添加@ManyToOne注釋和手動設置的參考書籍。

在這種情況下,關系的擁有方實際上是Chapter ,即一章定義了它屬於哪本書。

如果您確實需要空值,請使用@Column(nullable = true),否則如上一個答案中所述-您需要手動設置它,將Chapter添加到列表中不會設置bookId

暫無
暫無

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

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