при написании приложения для книжного магазина мне нужно было поместить сопоставления для классов Book и Publisher.
Книга имеет отношение n-к-1 с Publisher. Также n-к-1 с Author.Я хотел предоставить пользователю с правами администратора возможность удалять книги, авторов или издателей.
Издатель без книг не имеет смысла. Аналогично для Автора. Если все книги издателя удалены, издательдолжны быть удалены из БД.Если все Книги автора будут удалены, Автор также должен быть удален.Это звучит как каскад удаления-сироты. Но отображение много-к-одному не поддерживает удаление-сироту.
Кроме того, если я удаляю издателя, все его книги должны быть удалены.Точно так же удаление автора должно удалить все его книги.
В настоящее время у меня есть классы Автор, Издатель и Книга, определенные ниже: Книга имеет поля Автор и Издатель. Но Автор или Издатель не имеет ссылки наих книги.Должен ли я переопределить эти классы?Как я должен сопоставить отношения между Книгой и Издателем?
Любая помощь приветствуется
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"/>
...