java类自定义属性找不到_找不到类型的属性...定制Spring Data存储库

找不到类型的属性...定制Spring Data存储库

我正在尝试实现自定义的Spring存储库。 我有界面:

public interface FilterRepositoryCustom {

List filterBy(String role);

}

实现:

public class FilterRepositoryImpl implements FilterRepositoryCustom {

...

}

和“主”存储库,扩展了我的自定义存储库:

public interface UserRepository extends JpaRepository, FilterRepositoryCustom {

...

}

根据文档,我正在使用Spring Boot,并且:

默认情况下,Spring Boot将启用JPA存储库支持并查看 包(及其子包),其中@SpringBootApplication是 位于。

运行应用程序时,出现以下错误:

org.springframework.data.mapping.PropertyReferenceException:未找到针对User类型的属性filterBy!

5个解决方案

63 votes

这里的问题是您正在创建UserRepositoryImpl,但您在UserRepositoryImpl中使用它。您需要创建UserRepositoryImpl才能进行此工作。

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

基本上

public interface UserRepositoryCustom {

List filterBy(String role);

}

public class UserRepositoryImpl implements UserRepositoryCustom {

...

}

public interface UserRepository extends JpaRepository, UserRepositoryCustom {

...

}

参见:马特·福赛斯评论

Aman Tuladhar answered 2020-07-31T07:25:38Z

1 votes

是否必须将CustomRepository中的getStatusByCriteria(CustomCriteria criteria), CustomCriteria仅定义为

1.实体类名称-getStatusByCriteria(CustomCriteria criteria), CustomCriteria,

2.实体类属性-getStatusByCriteria(CustomCriteria criteria), CustomCriteria,此处的firstName是用户实体类的属性。

我可以没有诸如customMethod(CustomCriteria条件)之类的条件吗,条件类包含用于构造动态查询的各种属性。

例如 getStatusByCriteria(CustomCriteria criteria), CustomCriteria是用@Component注释的简单pojo,以便spring可以识别它。

当我尝试这个我得到一个错误:

org.springframework.data.mapping.PropertyReferenceException:否 属性类型为UserRepository的条件!

Vivek Vhatkar answered 2020-07-31T07:26:25Z

1 votes

如果在您的spring配置中未选择FilterRepositoryCustom的impl类,则可能发生此错误:

@EnableJpaRepositories(basePackageClasses = {RepoPackageMarker.class, FilterRepositoryCustomImpl.class})

user64141 answered 2020-07-31T07:26:45Z

-1 votes

在我的一个项目中,我遇到了同样的问题。 我通过在pom.xml中添加一行来解决了这个问题

org.apache.maven.plugins

maven-compiler-plugin

com/my/package/entities/*.java

com/my/package/repositories/*.java

com/my/package/repositories/impl/*.java

Bruno 82 answered 2020-07-31T07:27:06Z

-4 votes

旧方法:

实体aThing = repository.findOne(1L);新方法:

可选的aThing = repository.findById(1L);

Java Man answered 2020-07-31T07:27:35Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值