首页 > 解决方案 > 在 Spring Boot 存储库中使用自动装配 bean 的自定义删除方法

问题描述

在 Spring Boot 中是否有可能编写一个自定义删除方法,其中包含一个自动装配的 bean。我将尝试解释它:

基本上,我目前拥有的是:

当我的数据库资产被删除时,我希望能够删除/修改我的存储桶资产。

理想情况下,我希望能够做到:

@Repository
public abstract class AssetJpaRepository implements JpaRepository<Asset, Long> {

    public abstract Asset findByUuid(String uuid);

    public abstract Asset findOneByFriendlyName(String friendlyName);
    
    @Autowired
    private BlobContainerClient assetContainerClient;

    @Override
    public void delete(Asset asset) {
        BlobClient assetClient = assetContainerClient.getBlobClient(asset.getFileReference());
        assetClient.delete();
    }
}

现在的问题是 Spring Boot 不会将 AssetJpaRepository 初始化为存储库。

有没有办法我可以干净地做到这一点?

注意:删除服务级别的存储桶资产不是一种选择,因为我有父实体,当父实体被删除时,它们将调用资产删除方法。

提前致谢!

标签: javaspringspring-boot

解决方案


首先,这不是一个好方法,您应该创建 AssetJpaRepository Interface,然后创建一个单独的类并实现它Interface 其次,您在方法顶部Native Query使用(Delete query) Annotation 创建。@Query


推荐阅读