QuerydslPredicateExecutor与抽象实体

时间:2018-03-29 16:56:11

标签: spring mongodb spring-data querydsl spring2.x

迁移到Spring 2.0后,我遇到了MongoRepository实现QuerydslPredicateExecutor<abstract_class>的问题。当传递谓词从其中一个具体类引用属性时,它失败了:

java.lang.IllegalStateException: Required property propertyId not found for class org.some.abstract.class.EntityClass!
at org.springframework.data.mapping.PersistentEntity.getRequiredPersistentProperty(PersistentEntity.java:159)
at org.springframework.data.mongodb.repository.support.SpringDataMongodbSerializer.getPropertyFor(SpringDataMongodbSerializer.java:208)
at org.springframework.data.mongodb.repository.support.SpringDataMongodbSerializer.getPropertyForPotentialDbRef(SpringDataMongodbSerializer.java:225)
at org.springframework.data.mongodb.repository.support.SpringDataMongodbSerializer.isReference(SpringDataMongodbSerializer.java:141)
at org.springframework.data.mongodb.repository.support.SpringDataMongodbSerializer.asDBKey(SpringDataMongodbSerializer.java:174)
at com.querydsl.mongodb.MongodbSerializer.visit(MongodbSerializer.java:104)
at com.querydsl.mongodb.MongodbSerializer.visit(MongodbSerializer.java:37)
at com.querydsl.core.types.OperationImpl.accept(OperationImpl.java:83)
at com.querydsl.mongodb.MongodbSerializer.handle(MongodbSerializer.java:40)
at com.querydsl.mongodb.MongodbSerializer.visit(MongodbSerializer.java:111)
at com.querydsl.mongodb.MongodbSerializer.visit(MongodbSerializer.java:37)
at com.querydsl.core.types.OperationImpl.accept(OperationImpl.java:83)
at com.querydsl.mongodb.MongodbSerializer.handle(MongodbSerializer.java:40)
at com.querydsl.mongodb.AbstractMongodbQuery.createQuery(AbstractMongodbQuery.java:399)
at com.querydsl.mongodb.AbstractMongodbQuery.createCursor(AbstractMongodbQuery.java:273)
at com.querydsl.mongodb.AbstractMongodbQuery.createCursor(AbstractMongodbQuery.java:268)
at com.querydsl.mongodb.AbstractMongodbQuery.fetchOne(AbstractMongodbQuery.java:347)
at org.springframework.data.mongodb.repository.support.QuerydslMongoPredicateExecutor.findOne(QuerydslMongoPredicateExecutor.java:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:377)
at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:200)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:629)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:593)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:578)
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.$Proxy120.findOne(Unknown Source)

整件事与之前的版本合作,即spring-data-mongodb:1.10.10。

0 个答案:

没有答案