我有下面的模型:一篇文章可以有一些标签,一个标签可以在一些文章上。所以这是与 3 个表的多对多关系:
- 文章
- ARTICLE_TAG
- 标签
当我删除标签时,我想删除:
- TAG中的标签
- 标签与在 ARTICLE_TAG 中标记的文章之间的所有关系
但我当然不想删除 ARTICLE 中的文章。
我怎样才能做到这一点 ?
我试试这个,但它不起作用:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
for (Article article : tagToDelete.getArticles()) {
article.getTags().remove(tagToDelete);
}
session.delete(tagToDelete);
谢谢 !
@Entity
@Table(name="ARTICLE")
public class Article extends AbstractAuditedEntity {
@Id
@Column(name="ID", nullable=false)
private Long id;
@ManyToMany
@JoinTable(name="ARTICLE_TAG", joinColumns=@JoinColumn(name = "ARTICLE_ID"), inverseJoinColumns=@JoinColumn(name = "TAG_ID"))
private Set<Tag> tags = new HashSet<>();
public Article() {}
/** Getters & Setters */
}
@Entity
@Table(name="TAG")
public class Tag {
@Id
@Column(name="ID", nullable=false)
private Long id;
@ManyToMany(mappedBy="tags")
private Set<Article> articles = new HashSet<>();
public Tag() {}
/** Getters & Setters */
}