问题
是否可以将一行删除到由 @ManyToMany 注释创建的连接表中?
语境
使用此架构:
标签
TAGS_ARTICLES
文章
当一个标签从public Set<Tag> tags
(一个列表到ARTICLE
类)中删除时,相应的行TAGS_ARTICLES
也被删除,但不是TAG
表中的标签。
唯一的方法是创建一个 SQL 脚本或 JPA/Hibernate 允许我们使用注释来做到这一点?
代码
我当前的代码是:article.getTags().remove(tag);
此行从列表中删除标记,但未在数据库中完成更改。
结论
我看到了这篇文章:How to delete a row in join table with JPA,但也必须删除相关标签(不是我的情况)。
谢谢。
编辑 1:数据库中的预期结果
删除前
ARTICLE
| article_id |
| a1 |
| a2 |
| a3 |
TAGS_ARTICLES
| article_id | tag_id |
| a1 | t1 |
| a1 | t2 |
| a2 | t2 |
TAG
| article_id |
| t1 |
| t2 |
从 a1 标签列表中删除 t1 后
ARTICLE
| article_id |
| a1 |
| a2 |
| a3 |
TAGS_ARTICLES
| article_id | tag_id |
| a2 | t1 |
| a2 | t2 |
TAG
| article_id |
| t1 |
| t2 |
编辑 2:加入表代码
@Entity
public class Article {
...
@ManyToMany
@JoinTable(name = "tags_articles",
joinColumns = @JoinColumn(name = "idarticle"),
inverseJoinColumns = @JoinColumn(name = "idtag")
)
private Set<Tag> tags = new HashSet<>();
...
}
aluckdog
斯蒂芬大帝
相关分类