找不到类型的属性...自定义 Spring 数据存储库

新手上路,请多包涵

我正在尝试实现一个自定义 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 许可协议

阅读 263
1 个回答

这里的问题是您正在创建 FilterRepositoryImpl 但您在 UserRepository 中使用它。您需要创建 UserRepositoryImpl 来完成这项工作。

阅读此文档以获取更多详细信息

基本上

public interface UserRepositoryCustom {
    List<User> filterBy(String role);
}

public class UserRepositoryImpl implements UserRepositoryCustom {
...
}

public interface UserRepository extends JpaRepository<User, String>, UserRepositoryCustom {
...
}

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

原文由 A0__oN 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题