我正在尝试实现一个自定义的Spring存储库。我有一个接口:
public interface FilterRepositoryCustom {
List<User> filterBy(String role);
}
实施:
public class FilterRepositoryImpl implements FilterRepositoryCustom {
...
}
和“主”存储库,扩展我的自定义存储库:
public interface UserRepository extends JpaRepository<User, String>, FilterRepositoryCustom {
...
}
我使用的是Sping Boot ,根据docs:
默认情况下,Sping Boot 将启用JPA存储库支持,并在@SpringBootApplication所在的包(及其子包)中查找。
当我运行应用程序时,我得到这个错误:
数据Map。属性引用异常:找不到类型User的属性filterBy!
9条答案
按热度按时间00jrzges1#
这里的问题是您正在创建**
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
.gstyhher2#
如果在Spring配置中没有拾取FilterRepositoryCustom的impl类,则可能发生此错误的另一种方式是:
g9icjywg3#
我遇到了同样的问题。请检查您的软件包结构是否如下所示
因为当我尝试使用我的自定义存储库时,它看不到实现。(实现应该在同一个包或子包中,以便Spring看到它)
也许它能帮助某些人(^^)
crcmnpdw4#
CustomRepository中的
customMethod()
是否必须定义以下参数1.实体类名称-
customMethod(User user)
,2.实体类属性-
customMethod(String firstName)
,这里firstName是用户实体类的属性。我不能使用customMethod(CustomCriteria标准)之类的东西吗?标准类包含用于构造动态查询的各种属性。
例如,
getStatusByCriteria(CustomCriteria criteria), CustomCriteria
是一个简单的pojo,用@Component注解,以便spring识别它。当我尝试这样做时,我得到一个错误:
数据Map。属性引用异常:找不到类型UserRepository的属性条件!
bweufnob5#
对我来说钥匙就是
1.@启用Jpa存储库(存储库基类=我的存储库实现类)
1.接口上的@NoRepositoryBean注解
按照您的 Spring 版本的文档进行操作https://docs.spring.io/spring-data/data-commons/docs/2.3.4.RELEASE/reference/html/#repositories
因此,结果是:
46scxncf6#
我也有这个错误。它发生是因为我配置了带有包的elasticSearch存储库
接下来,我将MyElasticSearchRepository从包'some.package'移到另一个包,但没有更改配置
jvlzgdj97#
我在我的一个项目中遇到了同样的问题,我通过在我的pom.xml中添加一行来解决这个问题
rfbsl7qr8#
对应于片段接口的类名中最重要的部分是Impl后缀。
6mw9ycah9#
老者道:
新方法: