У меня есть @ManyToMany
отношение Author
и Source
сущностей, где Author
является владельцем сущности. Когда я удаляю автора, все в порядке, и hibernate генерирует Hibernate: delete from author_source where author=?
. Но когда я удаляю источник, Hibernate генерирует один и тот же запрос для каждого вхождения authorId
в таблице author_source
, которая имела связь с удаленным источником. Таким образом, этот запрос также удаляет связь между другими источниками (если у автора было два источника, оба соединения удаляются).
Автор лица:
@Entity
@Table(name = "author")
public class Author implements Serializable {
@Id
@Column(name = "authorId")
@GeneratedValue
private Integer authorId;
@SourceFormat // own formatter
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "author_source",
joinColumns = { @JoinColumn(name = "author") },
inverseJoinColumns = { @JoinColumn(name = "source") }
)
private Set<Source> sources;
}
Исходный объект:
@Entity
@Table(name = "source")
public class Source implements Serializable {
@Id
@Column(name = "sourceId")
@GeneratedValue
private Integer sourceId;
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "sources")
private Set<Author> authors;
}
Я хочу, чтобы Hibernate генерировал
delete from author_source where author=?
запрос при удалении автора и
delete from author_source where source=?
при удалении источника. Это возможно или мне нужно делать это вручную?