在JPA的@OneToOne
(一對一)及@OneToMany
(一對多)有一個orphanRemoval
屬性,其作用如下。
例如一個作者(Author)有多本書籍著作(Book),則在Author
類別中會有Book
的集合如下。
Author.java
public class Author {
...
@OneToMany(mappedBy="author", orphanRemoval=true)
private Set<Book> bookSet;
// getters and setters ommitted
}
Book.java
public class Book {
...
@ManyToOne
private Author author;
// getters and setters ommitted
}
orphanRemoval
預設值為false。若設為true,則當Author
物件中的一本book
從bookSet
移除時,資料庫Book
資料表的該本書的資料列會被刪除。
orphan就是孤兒的意思,orphanRemoval=true
的意思就是child沒有parent時就會被刪除。
而和CascadeType.REMOVE
不同的是,CascadeType.REMOVE
是當Authur
物件從資料表中刪除時,其所關聯的child,也就是所屬的bookSet
中的每一個Book
也會從資料表被一併刪除。
參考:
沒有留言:
張貼留言