【问题标题】:Repository Event Handler is not getting invoked after a cascade delete级联删除后未调用存储库事件处理程序
【发布时间】:2019-05-19 02:23:08
【问题描述】:

我有两个班级。第一个是Advertisement,第二个是Image。广告类包含图像列表。此列表带有注释:

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)

当从数据库中删除图像时,我不会执行一些操作(从服务器中删除图像)。我不会调用图像存储库来删除级联删除广告时删除的图像。我创建了一个存储库事件处理程序:

@RepositoryEventHandler(Image.class)
public class ImageEventHandler {

@Autowired
ImageStorageService imageStorageService;

@HandleAfterDelete
public void handleImageAfterDelete(Image image){
    String imageName = image.getName();
    System.out.println("**********************************");
    imageStorageService.deleteFile(imageName);
}
}

删除图像时根本不会调用我的事件处理程序。

关于可能是什么问题的任何想法。

【问题讨论】:

    标签: hibernate spring-boot event-handling spring-data-jpa spring-data


    【解决方案1】:

    过去我也遇到过 EventHandler 的问题。我的错误是,没有创建相应的bean,这里描述:https://www.baeldung.com/spring-events

    也许这也是你的问题。

    问候马蒂亚斯

    【讨论】:

    • 创建对应的bean是什么意思。
    • 您可以创建一个 Bean,或者在类级别使用 @Component。 Spring 需要找到 EventHandler 的可能性,为此您需要一个 bean。因此,您可以自己创建它,也可以使用创建一个的注解,例如组件注解。
    • 我在 ImageEventHandler 类中添加了@Component 仍然不起作用
    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多