Я использую Hibernate (через JPA ). Есть способ удалить сущность:
public void delete(final ID id) { entityManager.createQuery(String.format("delete from %s e where e.id = :id", entityClass.getSimpleName()))
.setParameter("id", id).executeUpdate();
}
Я удаляю сущность (с отношением many2many):
Журналы гибернации:
Hibernate: delete from author_to_book where (author_id) in (select id from author where id=?)
Hibernate: delete from author where id=?
Кто отвечает за удаление ассоциаций из таблицы привязок? В конце концов, мой код определяет только удаление из основной таблицы.
Как это работает?
Отображение:
@Entity
public class Author extends BaseEntity implements IAuthor {
@Column
private String name;
@JoinTable(name = "author_to_book",
joinColumns = {@JoinColumn(name = "author_id")} ,
inverseJoinColumns = {@JoinColumn(name = "book_id")}
)
@ManyToMany(targetEntity = Book.class, fetch = FetchType.LAZY)
@OrderBy("title ASC")
private Set<IBook> books = new HashSet<>();
Книга сущность не имеет сопоставления с Автор сущность