2012-09-21 4 views
0

J'ai une configuration avec JPA (mise en veille prolongée + postgresql) et MongoDB:Spring DataJPA question sur commande de requête:

<dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb</artifactId> 
     <version>1.0.3.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>1.1.0.RELEASE</version> 
    </dependency> 

Mon interface Repository est:

@Repository 
public interface JpaModelRepository extends JpaRepository<ModelEntity, Integer> { 
    public ModelEntity findByName(String modelNameSample); 
} 

Mon entité:

@Entity 
@Table (name = "model") 
public class ModelEntity implements GenericId<Integer>, Serializable { 

    .... 
    @Column (name = "name_tx") 
    private String name; 

La mise en œuvre de l'interface du référentiel est générée automatiquement par SpringData. Si je supprime le findByName, tout fonctionne correctement dans mon projet. Si je laisse j'ai cette erreur tomcat:

Caused by: java.lang.NoSuchMethodError: org.springframework.data.repository.query.parser.Part.getProperty()Lorg/springframework/data/repository/query/parser/Property; 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:163) 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:95) 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:49) 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:109) 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:88) 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:73) 
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$QueryPreparer.<init>(PartTreeJpaQuery.java:102) 
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:59) 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:93) 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:164) 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:71) 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:269) 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:142) 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:114) 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:38) 
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142) 
    ... 85 more 

a essayé d'utiliser cette documentation, mais a échoué pour une raison: Spring Doc

L'espoir est l'un des gars vous avez réussi à créer une requête personnalisée (comme findBySomeProperty (...)) ...

Merci

Répondre

0

Je trouve la réponse:

<spring.version>3.1.2.RELEASE</spring.version> 
    <spring-data.jpa.version>1.2.0.BUILD-SNAPSHOT</spring-data.jpa.version> 
    <spring-data.mongodb.version>1.1.0.BUILD-SNAPSHOT</spring-data.mongodb.version> 

https://github.com/SpringSource/spring-data-multistore-test

J'ai fait quelques test maven combinant la version sur ce dépôt git

1

Les API de données de printemps changé bewteen 1.0 et 1.1 versions, c'est pourquoi cette erreur. Utilisez la même version pour vos deux dépendances et cela devrait fonctionner.

+0

Bonjour Abhinav. Tu as raison. Le problème est mongo Api est la version 1.0.4 (dernière version que j'ai trouvé sur http://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb) et jpa api est la version 1.1.2 (http: // mvnrepository.com/artifact/org.springframework.data/spring-data-jpa) –

0

J'ai eu le même problème en essayant d'utiliser les données Spring JPA + Hibernate + Spring Framework 4.0. Le problème est que le projet Spring Data ne se maintient pas au même rythme que le projet Spring Framework.

Je résous le problème en utilisant la bonne combinaison de versions JAR et en excluant tout autre projet Spring, de sorte que les JAR dépendants puissent être téléchargés correctement et automatiquement en fonction du fichier pom.xml "Spring Data". Vérifiez ici toutes les dépendances de données Spring: http://search.maven.org/#artifactdetails%7Corg.springframework.data%7Cspring-data-jpa%7C1.6.0.RELEASE%7Cjar

j'ai changé maven fichier pom.xml à:

<properties> 

    <!-- Generic properties --> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 

    <!-- Spring --> 
    <spring-framework.version>3.2.9.RELEASE</spring-framework.version> 
    <spring-data.version>1.6.0.RELEASE</spring-data.version> 

    <!-- Hibernate/JPA --> 
    <hibernate.version>3.6.10.Final</hibernate.version> 

    <!-- Test --> 
    <junit.version>4.11</junit.version> 

    </properties> 

    <dependencies> 

    <!-- Spring framework --> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>${spring-data.version}</version> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>${hibernate-jpa.version}</version> 
    </dependency> 

      .... 
</dependencies> 
0

J'ai eu le même problème de

org.springframework.data.repository.query.parser.PartTree.isCountProjection()Ljava/lang/Boolean; 

Mais je résolus en utilisant un bonne combinaison de pots comme

spring-data-jpa-1.2.0.RELEASE.jar <BR> 
spring-data-commons-1.6.3.RELEASE.jar <BR> 
spring-data-commons-core-1.4.1.RELEASE.jar<BR> 
hibernate-entitymanager-4.1.12.final.jar<BR> 
hibernate-jpa-2.1-api-1.0.0.final.jar<BR> 
hibernate-validator-4.2.0.final.jar<BR> 
hibernate-commons-annotations-4.0.0.CR2.jar<BR> 

et en utilisant Spring core 3.2.5 versio n de pots. Le problème a été résolu. J'utilisais également un dialecte approprié, c'est-à-dire le bon pilote pour me connecter à la base de données.