我正在尝试实现一个自定义 Spring 存储库。我有界面:
public interface FilterRepositoryCustom {
List<User> filterBy(String role);
}
实施:
public class FilterRepositoryImpl implements FilterRepositoryCustom {
...
}
和“主”存储库,扩展我的自定义存储库:
public interface UserRepository extends JpaRepository<User, String>, FilterRepositoryCustom {
...
}
我正在使用 Spring Boot,并且根据 文档:
默认情况下,Spring Boot 将启用 JPA 存储库支持并查看 @SpringBootApplication 所在的包(及其子包)。
当我运行我的应用程序时,我收到此错误:
org.springframework.data.mapping.PropertyReferenceException:没有找到用户类型的属性过滤器!
原文由 Héctor 发布,翻译遵循 CC BY-SA 4.0 许可协议
这里的问题是您正在创建
FilterRepositoryImpl
但您在UserRepository
中使用它。您需要创建UserRepositoryImpl
来完成这项工作。阅读此文档以获取更多详细信息
基本上
Spring Data 2.x 更新
这个答案是为 Spring 1.x 编写的。正如 Matt Forsythe 所指出的,命名期望随着 Spring Data 2.0 的改变而改变。实现从
the-final-repository-interface-name-with-an-additional-Impl-suffix
更改为the-custom-interface-name-with-an-additional-Impl-suffix
。所以在这种情况下,实现的名称是:
UserRepositoryCustomImpl
。