Al hora de hacer una query en MongoDb utilizando QueryDSL para utilizar los predicado que facilitan la creación de queries, nos ha dado el siguiente error.
------ java.lang.NoSuchMethodError: com.mysema.query.mongodb.MongodbQuery.<init>(Lcom/mongodb/DBCollection;Lcom/google/common/base/Function;Lcom/mysema/query/mongodb/MongodbSerializer;)V at org.springframework.data.mongodb.repository.support.SpringDataMongodbQuery.<init>(SpringDataMongodbQuery.java:58) at org.springframework.data.mongodb.repository.support.SpringDataMongodbQuery.<init>(SpringDataMongodbQuery.java:44) at org.springframework.data.mongodb.repository.support.QueryDslMongoRepository.createQueryFor(QueryDslMongoRepository.java:167) at org.springframework.data.mongodb.repository.support.QueryDslMongoRepository.count(QueryDslMongoRepository.java:154) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:334) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:319) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) -----El código utilizado el el siguiente:
import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.querydsl.QueryDslPredicateExecutor; import charris.example.domain.Product; public interface ProductRepository extends MongoRepository<Product, String>, QueryDslPredicateExecutor<Product> { }
El error proviene al hacer una query como esta:
ProductRepository repo = context.getBean(ProductRepository.class); Product p = repo.findOne(QProduct.product.name.eq("ProductName"));
El problema consistía en un problema de versiones entre los jar de
- querydl-mongodb
- spring-data
Las versiones de los Jars fueron las siguientes a fecha (18/06/2012)
- querydsl-mongodb-2.5.0.jar
- querydsl-mongodb-2.5.0-apt.jar
- querydsl-mongodb-2.5.0-apt-one-jar.jar
- spring-data-commons-core-1.3.2.BUILD-20120618.140513-1.jar
- spring-data-jpa-1.1.1.BUILD-20120606.192912-1.jar
- spring-data-mongodb-1.1.0.BUILD-20120614.104654-40.jar
No hay comentarios:
Publicar un comentario