java - 在 Spring Boot 存储库中使用自动装配 bean 的自定义删除方法
问题描述
在 Spring Boot 中是否有可能编写一个自定义删除方法,其中包含一个自动装配的 bean。我将尝试解释它:
基本上,我目前拥有的是:
- 一个存储资产元数据的数据库表(上传器,友好文件名,...)
- 存储实际资产文件数据的存储桶(在我的情况下来自 Azure)
当我的数据库资产被删除时,我希望能够删除/修改我的存储桶资产。
理想情况下,我希望能够做到:
@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 初始化为存储库。
有没有办法我可以干净地做到这一点?
注意:删除服务级别的存储桶资产不是一种选择,因为我有父实体,当父实体被删除时,它们将调用资产删除方法。
提前致谢!
解决方案
首先,这不是一个好方法,您应该创建 AssetJpaRepository Interface
,然后创建一个单独的类并实现它Interface
其次,您在方法顶部Native Query
使用(Delete query) Annotation 创建。@Query