@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,这样chapter.bookid将在插入新书时获取Book.bookId的生成值。
Book bk=new Book();
bk.setName("b1");
Chapter ch=new Chapter();
ch.setName("b1c1");
bk.getChapters().add(ch);
我收到此错误 Hibernate:插入Book(名称)值(?) Hibernate:插入章节(bookId,name)值(?,?) 19:56:59,094 ERROR JDBCExceptionReporter:234 - 列'bookId'不能为空
答案 0 :(得分:6)
您必须自己设置Chapter.bookId
或将Chapgter
中的引用从Long
更改为Book
,添加@ManyToOne
注释并设置参考手动到书上。
在这种情况下,关系的拥有方实际上是Chapter
,即章节定义了它所属的书。
答案 1 :(得分:0)
如果你真的需要空值,请使用@Column(nullable = true),否则如前面的答案所述 - 你需要手动设置,添加章节列表不设置bookId