3

クラスがあるとします:

@Entity
public class Bean {
    @Id
    private String beanId;
    //other fields & setters and getters
}

そして、対応する Spring Data JPA リポジトリ。List<String>すべてのbeanIds.

@RepositoryDefinition(domainClass = Bean.class, idClass = String.class)
public interface BeanRepository {
    @Query("select b.beanId from Bean b")
    List<String> findAllBeanId();
}

上記のように、すべてが期待どおりに機能します。しかし、これは単純な操作であり、クエリを明示的に記述したくありません。Spring Data がメソッドを解析し、上記のクエリ (または同じ機能) を取得できるように、メソッドの名前は何にする必要があります。Spring Data に関する 2 冊の本として、両方のリファレンス ドキュメントを検索しました。上記の名前 ( findAllBeanId) と私が試した他のもの (など) はfindBeanIdfindBeanBeanId根本的な原因として次の例外をスローします。

org.springframework.data.mapping.PropertyReferenceException: No property find found for type Trade
    at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:353)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:353)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:271)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:245)
    at org.springframework.data.repository.query.parser.Part.<init>(Part.java:72)
    at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:180)
    at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:260)
    at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:240)
    at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:68)
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:57)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:90)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:162)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:68)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:279)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:147)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:153)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:43)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
    ... 22 more
4

2 に答える 2

5

Spring ドキュメント: http://static.springsource.org/spring-data/jpa/docs/1.3.0.RELEASE/reference/html/jpa.repositories.htmlエンティティから特定の列/プロパティのみを取得することについては何もありませんメソッド名から生成されたクエリによって。なので現状では無理だと思います。

于 2013-08-09T12:18:31.867 に答える