我在 Spring Boot 应用程序的 Spring Data MongoDB 存储库中遇到 @Aggregation 注释的问题。虽然 @Query 注释按预期工作,但使用 @Aggregation 会导致异常,这表明在处理 @Aggregation 注释时存在潜在的错误或不当行为。
Spring Boot版本:3.1.5 Spring Data MongoDB 版本:3.1.5 MongoDB 版本:6.0
我有一个自定义存储库接口,使用 @Query 和 @Aggregation 注释的方法扩展 CrudRepository。这是代码的相关部分:
import com.myproject.resource.AccountEntity;
import org.springframework.data.mongodb.repository.Aggregation;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface MyCustomRepository extends CrudRepository<AccountEntity, String> {
@Query(value = "{ '_id': ?0 }")
AccountEntity myOtherCustomAccount(String id );
@Aggregation("{ '$project': { '_id' : '$lasName' } }")
List<String> myCustomAggregation();
}
在应用程序启动时创建存储库时,应用程序抛出以下异常:
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property 'myCustomAggregation' found for type 'AccountEntity'
这是异常之前的日志(我设置了logging.level.org.springframework.data=DEBUG)
2023-11-28T14:03:19.910+01:00 DEBUG 38160 --- [ restartedMain] o.s.d.r.c.s.RepositoryFactorySupport : Initializing repository instance for com.sword.signature.model.repository.resource.MyCustomRepository…
鉴于 @Query 注释工作正常,并且该问题似乎与 @Aggregation 无关,我怀疑这可能是 Spring Data MongoDB 处理 @Aggregation 注释时的错误或未记录的行为。
任何解决此问题的见解或帮助将不胜感激。
感谢您的时间和帮助。
根本原因是我的 Spring Data MongoDB 配置中的自定义repositoryFactoryBeanClass 设置。此自定义策略重新定义了 QueryLookupStrategy,干扰了存储库注释的正常处理,包括 @Aggregation。
遇到同样的问题。您能否简要描述一下您为解决此问题所做的所有更改?