【问题标题】:Spring Boot :Deleting a blog posts shared tag only when the last post that has it is deletedSpring Boot:仅在删除最后一篇文章时才删除博客文章共享标签
【发布时间】:2020-11-07 21:01:28
【问题描述】:

我在为这个问题寻求解决方案时遇到了两难境地。我有两个(可以是任意数量)共享相同标签的博客文章。

我为每个添加的帖子设置了一组标签,因此不可能出现重复的标签,所以假设我添加了带有标签“汽车”和“蓝色”的第一篇文章,以及带有“汽车”和“红色”的第二篇文章。然后我将在数据库标签表中有汽车、红色、蓝色,所以汽车只有一次,但两个帖子共享它,这使我处于无法删除任何两个帖子的情况,因为共享标签。

如何仅在删除最后一个帖子而不是之前(当我删除第一个帖子时)删除标签?我认为没有任何级联类型可以帮助我解决这个问题,但我可能弄错了? (我使用了 All 和 Remove 但这不起作用) 我有什么解决方案?

我正在使用带有 MySQL 的 Spring Boot。

如果有人能指出我正确的方向,我将不胜感激!

L.E :对于任何有同样问题的人,我用过 cascade = {CascadeType.MERGE, CascadeType.PERSIST} 在帖子(父)标签(子)多对多关系上。并在删除最后一篇文章后使用循环删除剩余的标签。到目前为止一切正常。

【问题讨论】:

  • 你如何记录使用的标签?每次删除帖子时,您都可以减少计数。

标签: java mysql spring spring-boot


【解决方案1】:

您可以使用孤立删除选项,但它会在存在活动关系时重新插入依赖关联。你可以阅读this blog post

你可以使用事件监听器,我推荐这个。编写一个在删除标签时工作的事件监听器,因此使用事件监听器可以有条件地删除标签。你可以阅读this for event listeners。您可以使用@PostRemove 事件。

【讨论】:

    猜你喜欢
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    相关资源
    最近更新 更多