[英]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
自己或更改參考Chapgter
從Long
到Book
,添加@ManyToOne
注釋和手動設置的參考書籍。
在這種情況下,關系的擁有方實際上是Chapter
,即一章定義了它屬於哪本書。
如果您確實需要空值,請使用@Column(nullable = true),否則如上一個答案中所述-您需要手動設置它,將Chapter添加到列表中不會設置bookId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.