Ily*_*lya 4 java hibernate jpa
让我有桌子(书籍和作者有很多关系)
BOOKS
id
book_name
作者
id
author_name
BOOKS_AUTHORS
id
book_id
author_id
我将这些表映射到实体上
class Books
{
@Id
long id;
@Column(name = "author_name")
String name;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "BOOKS_AUTHORS",
joinColumns = @JoinColumn(name = "book_id"),
inverseJoinColumns = @JoinColumn(name = "author_id"))
List<Authots> authors;
// setter, getters, adder
}
class Authors
{
@Id
long id;
@Column(name = "author_name")
String name;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "BOOKS_AUTHORS",
joinColumns = @JoinColumn(name = "author_id"),
inverseJoinColumns = @JoinColumn(name = "book_id"))
List<Books> books;
// setter, getters, adder
}
Run Code Online (Sandbox Code Playgroud)
现在,我尝试下一步
public void addAuthor(final String bookName, final Author author)
{
final Book book = // get book from database by bookName
if (book == null)
throw new DataNotFoundException("Book not found :(");
author.addBook(book);
book.addAuthor(author);
entityManager.persist(author);
}
Run Code Online (Sandbox Code Playgroud)
1)我得到BOOKS_AUTHORS记录的ID必须不为NULL的异常
2)我如何为关系表生成ID(ising sequance generator)BOOKS_AUTHORS
axt*_*avt 11
您不能使用它@ManyToMany来创建带有id字段的连接表.
如果连接表中的id字段是必需的,则必须BookAuthor为该表创建一个特殊的实体类(例如),并将其与带有@ManyToOne/ @OneToManyrelationships的书籍和作者连接.
否则,您需要从BOOKS_AUTHORS表中删除id字段.
| 归档时间: |
|
| 查看次数: |
4763 次 |
| 最近记录: |