![](/img/trans.png)
[英]Spring Data Rest error: Caused by: org.springframework.data.mapping.PropertyReferenceException: No property name found for type Project
[英]Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type User - Redis
我是Redis
新手並使用Spring Boot + Spring Data Redis
示例。 在此示例中,我在存儲庫方法上使用了QueryByExampleRedisExecutor<T>
,並使用Example
API執行自定義查詢。
以下是Redis NoSQL DB中的KEYS。
redis 127.0.0.1:6379> KEYS *
1) "country:76c78bcc-bb2a-41b3-a1fc-3dbb3042edd6:idx"
2) "country:76c78bcc-bb2a-41b3-a1fc-3dbb3042edd6"
3) "user:lastName:Kerr"
4) "user"
5) "user:role.roleName:API"
6) "country:countryName:India"
7) "Student:name:John Doe"
8) "user:8252a4b3-22a1-4e6c-99fc-04fed93a21a5:idx"
9) "user:8252a4b3-22a1-4e6c-99fc-04fed93a21a5"
10) "user:middleName:Lima"
11) "Student"
12) "user:middleName:Mike"
13) "user:firstName:John"
14) "country:countryCode:+91"
15) "user:role.roleName:ADMIN"
16) "user:lastName:Wixson"
17) "Student:1:idx"
18) "user:46ca0606-38a5-4d0c-8cea-38e2c4fa5bfa:idx"
19) "Student:2:idx"
20) "Student:1"
21) "user:firstName:Matt"
22) "user:46ca0606-38a5-4d0c-8cea-38e2c4fa5bfa"
23) "Student:2"
24) "country"
25) "Student:name:Michael Harford"
26) "country:84fc82f2-1c21-4d3e-9429-f1ee1039ceed:idx"
27) "country:84fc82f2-1c21-4d3e-9429-f1ee1039ceed"
redis 127.0.0.1:6379>
存儲庫方法 -
Example<User> example = Example.of(User.builder().firstName("Mike").build());
long count = userRepository.count();
System.out.println(count);
當我執行下面的方法時,我期望得到一個結果,但我得到兩個計數。 為什么?
更多信息顯示在此處: 考慮重新訪問上面的條目或在您的配置中定義類型為'org.springframework.data.redis.core.RedisTemplate'的bean
我們怎么能在日志上看到Redis snippet
? 我需要設置什么配置?
public interface UserRepository extends CrudRepository<User, String>, QueryByExampleExecutor<User>{
List<User> findByFirstName(String firstName);
List<User> findByFirstNameAndLastName(String firstName, String lastName);
@Query("SELECT u FROM User u WHERE u.middleName LIKE :middleName ")
List<User> findCustomByMiddleName(@Param("middleName") String middleName);
List<User> findByRole_RoleName(String roleName);
}
以下錯誤供參考 -
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:795)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)
at com.baeldung.MainAppDemo.main(MainAppDemo.java:31)
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type User!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:94)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:358)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:334)
at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:287)
at java.util.concurrent.ConcurrentMap.computeIfAbsent(Unknown Source)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:269)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:252)
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81)
at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:250)
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.collect(Unknown Source)
at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:251)
at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:380)
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.collect(Unknown Source)
at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:381)
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:93)
at org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.createQuery(KeyValuePartTreeQuery.java:206)
at org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.prepareQuery(KeyValuePartTreeQuery.java:148)
at org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.execute(KeyValuePartTreeQuery.java:106)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:602)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:590)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:59)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy69.findAll(Unknown Source)
at com.baeldung.MainAppDemo.run(MainAppDemo.java:47)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:792)
... 5 common frames omitted
您正在構建一個Example
但之后不使用它就將其丟棄。 您正在調用userRepository.count();
這基本上統計了所有記錄。 您應該使用帶Example
的count
。
此方法位於QueryByExampleExecutor
,您的接口UserRepository
應該擴展。 然后你就可以做到。
Example<User> example = Example.of(User.builder().firstName("Mike").build());
long count = userRepository.count(example);
System.out.println(count);
你應該得到你期望的結果。
我遇到了類似的問題。 解決方案是將spring-data-redis和spring-data-common軟件包升級到同一版本。 如果你使用maven:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.