JpaRepository无法找到属性

时间:2018-05-03 20:09:00

标签: java spring jpa spring-data couchbase

我刚刚将我的项目升级到Spring Boot 2并且现在使用我的一个JpaRepositories收到此错误:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type UserOrder

我的UserOrderRepository看起来像这样:

@Repository
public interface UserOrderRepository extends JpaRepository<UserOrder, String> {

}

我的代码绝对没有使用findAll这个词。不是作为一种财产,不作为一种方法,所以完全不知道为什么我会收到这个错误。

该项目使用Spring框架spring-data-couchbase工件写入Couchbase。

运行命令行mvn dependency:tree | grep -i spring给出:

[INFO] |  \- org.springframework.data:spring-data-couchbase:jar:3.0.6.RELEASE:compile
[INFO] |     +- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
[INFO] |     |  \- org.springframework:spring-expression:jar:5.0.5.RELEASE:compile
[INFO] |     +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
[INFO] |     +- org.springframework:spring-tx:jar:5.0.5.RELEASE:compile
[INFO] |     +- org.springframework.data:spring-data-commons:jar:2.0.6.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-properties-migrator:jar:2.0.1.RELEASE:runtime
[INFO] |  +- org.springframework.boot:spring-boot:jar:2.0.1.RELEASE:compile
[INFO] |  \- org.springframework.boot:spring-boot-configuration-metadata:jar:2.0.1.RELEASE:runtime
[INFO] +- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.0.1.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.0.1.RELEASE:compile
[INFO] |  +- org.springframework:spring-core:jar:5.0.5.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:5.0.5.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:2.0.1.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-aop:jar:2.0.1.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-jdbc:jar:2.0.1.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jdbc:jar:5.0.5.RELEASE:compile
[INFO] |  +- org.springframework.data:spring-data-jpa:jar:2.0.6.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-orm:jar:5.0.5.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-beans:jar:5.0.5.RELEASE:compile
[INFO] |  \- org.springframework:spring-aspects:jar:5.0.5.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:2.0.1.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.0.1.RELEASE:test
[INFO] |  +- org.springframework:spring-test:jar:5.0.5.RELEASE:test

2 个答案:

答案 0 :(得分:0)

我过去也遇到过这个问题。我不记得究竟是什么问题,但它与存储库方法的返回类型有关。从我们在其中一个方法中的自定义JPARepository,我们返回DTO而不是ENTITY对象。

答案 1 :(得分:0)

花了几天时间,我无法弄清楚为什么我会收到这个错误。我能够通过更改注释掉的代码来解决它,以便一次保存一个。这也可能是与Spring Couchbase数据项目相关的特定问题。

public boolean upsertUserOrders(Set<UserOrder> userOrderSet) {
    //userOrderRepository.save(userOrderSet);
    userOrderSet.forEach(uo -> userOrderRepository.save(uo));
}

我知道这不是主意,但我想我会发布我的解决方案(直到找到真正的解决方案)以防其他人遇到此问题。