2011-07-20 13 views
0

在編寫書店應用程序時,我需要爲Book和Publisher類放置映射。使用休眠來刪除沒有圖書的出版商

本書與發佈者具有n對1的關係。也與作者n比1。 我想給管理員用戶一個選項來刪除書籍,作者或發佈者。

沒有書的出版商沒有任何意義。與作者類似的情況。如果發佈者的所有書籍都被刪除,則發佈者必須從數據庫中刪除。 如果作者的所有圖書被刪除,作者也應該被刪除。 這聽起來像是一個刪除孤兒級聯。但多對一映射不支持刪除孤兒。

此外,如果我刪除了一個出版商,他的所有書籍都應該被刪除。 同樣,刪除作者應刪除他的所有書籍。

當前,我有作者,出版者和書籍類定義如下, 書有字段作者和出版者.But,作者或出版者,沒有提及他們的書。 我是否需要重新定義這些類? 我應該如何映射Book和Publisher之間的關係?

任何幫助表示讚賞

public class Book { 
    private Long bookId;  
    private Author author; 
    private Publisher publisher; 
... 
} 

public class Publisher { 
    private Long publisherId; 
    private String name;   
} 

public class Author { 
    private Long authorId; 
    private String name;  
} 

<class name="Book" table="BOOKS"> 
    <id name="bookId" column="BOOKID" type="long"> 
    <generator class="native"/> 
    </id> 
    ... 
    <many-to-one name="publisher" class="Publisher" column="PUBLISHERID" lazy="false" cascade="save-update"/> 
    ... 

回答

1

你需要映射集合(<x-to-many>)並將其設置爲cascade=all。這意味着如果您刪除集合的所有者,集合元素也會被刪除。

請注意,您也可以選擇使用註釋而不是xml。這將是@OneToMany(cascade=CascadeType.ALL)

+0

您可能希望孤兒刪除太... @OneToMany(cascade = CascadeType.ALL,orphanRemoval = true) – ptomli

+0

這是否意味着類作者和出版商包含參考書籍? – markjason72

+0

@ markjason72是的。 – Bozho