找不到类型的属性…定制的Spring Data存储库
我正在尝试实现自定义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:未找到针对User类型的属性filterBy!
回答:
这里的问题是你正在创建,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
。
以上是 找不到类型的属性…定制的Spring Data存储库 的全部内容, 来源链接: utcz.com/qa/414990.html