0

JPA(hibernate + postgresql)とMongoDBを使用したセットアップがあります。

    <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>

私のリポジトリインターフェースは次のとおりです。

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

私のエンティティ:

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

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

リポジトリインターフェイスの実装は、SpringDataによって自動生成されます。findByNameを削除すると、プロジェクトですべて正常に機能します。そのままにしておくと、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

このドキュメントを使おうとしましたが、何らかの理由で失敗しました: Spring Doc

ホープは、カスタムクエリ(findBySomeProperty(...)など)を作成することができた皆さんの1人です...

ありがとうございました

4

4 に答える 4

1

私は同じ問題を抱えていました

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

しかし、次のようなjarの適切な組み合わせを使用して解決しました

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>

Springコア3.2.5バージョンのjarを使用しています。問題は解決しました。

また、適切な方言、つまりデータベースに接続するための適切なドライバーも使用していました。

于 2015-01-29T18:10:47.277 に答える
1

Spring データ API は 1.0 リリースと 1.1 リリースの間で変更されたため、このエラーが発生しました。両方の依存関係に同じバージョンを使用すると、動作するはずです。

于 2012-09-21T13:04:17.280 に答える
0

私は答えを見つけました:

    <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

そのgitリポジトリでバージョンを組み合わせたMavenテストを行いました

于 2012-09-21T23:49:50.873 に答える
0

I got the same problem when trying to use Spring Data JPA + Hibernate + Spring Framework 4.0. The problem is that the Spring Data project doesn't keep-up at the same rate as the Spring Framework project.

I resolve the problem using the proper JAR version combination and excluding any other Spring project, so that those depended JAR could be downloaded correctly and automatically based on the "Spring Data" pom.xml file. Check here all the Spring Data dependencies: http://search.maven.org/#artifactdetails%7Corg.springframework.data%7Cspring-data-jpa%7C1.6.0.RELEASE%7Cjar

I changed my maven pom.xml file to:

    <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>
于 2014-05-23T08:38:48.250 に答える