我有两个实体:
@Data
@Entity
@Table(name = "tags")
public static class Tag {
public abstract class BaseEntity extends AutoUpdatable {
@Id
@Column(unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
@ManyToMany(mappedBy = "tags")
private List<Article> articles;
}
@Data
@Entity
@Table(name = "articles")
public static class Article {
@Id
@Column(unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
@ManyToMany
@JoinTable(
name = "articles_tags",
joinColumns = @JoinColumn(name = "article_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id")
)
private List<Tag> tags;
}
删除标签时,我所需要的只是将其也从商品实体中标签的集合中删除。 我需要通过spring数据jpa实现它。 我使用的是最新版本的spring boot和h2数据库。
这是一种优雅的方法吗?
答案 0 :(得分:0)
如果只想在删除时执行此操作,则可以在关系映射中使用CascadeType.REMOVE
参数:
@ManyToMany(cascade = CascadeType.REMOVE)
@JoinTable(
name = "articles_tags",
joinColumns = @JoinColumn(name = "article_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id")
)
private List<Tag> tags;
但是,这可能会导致a number of DELETE statements并非最佳选择。