Comment écrire Printemps de Données nom de la méthode pour récupérer tous les éléments dans une colonne?
Supposons que j'ai la classe:
@Entity
public class Bean {
@Id
private String beanId;
//other fields & setters and getters
}
Et le Printemps de Données JPA référentiel, où j'ai envie d'avoir dans un List<String>
tous les beanIds
.
@RepositoryDefinition(domainClass = Bean.class, idClass = String.class)
public interface BeanRepository {
@Query("select b.beanId from Bean b")
List<String> findAllBeanId();
}
Comme écrit ci-dessus, tout fonctionne comme prévu; mais c'est une opération simple et je ne veux pas écrire une requête explicite. Quel doit être le nom de la méthode, tels que le Printemps de Données peut l'analyser et d'en obtenir le ci-dessus mentionné requête (ou les mêmes fonctionnalités). J'ai cherché dans les deux à la documentation de référence comme les deux livres que j'ai sur le Printemps de Données. Le nom ci-dessus (findAllBeanId
) et d'autres que j'ai essayé (findBeanId
, findBeanBeanId
etc.) jeter l'exception suivante en tant que root cause:
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
OriginalL'auteur m3th0dman | 2013-08-09
Vous devez vous connecter pour publier un commentaire.
Au Printemps docs: http://static.springsource.org/spring-data/jpa/docs/1.3.0.RELEASE/reference/html/jpa.repositories.html il n'y a rien que de la colonne ou de la propriété de l'entité par requête généré à partir du nom de la méthode. Donc, je pense qu'actuellement, il n'est pas possible.
Ça va être une fonctionnalité intéressante, mais à mon humble avis n'est pas si facile à mettre en œuvre. Actuellement la méthode de récupération peut retourner seule entité ou d'une liste d'entités. Avec cette extension tout type de retour seront autorisés, mais aussi doit être vérifiée par rapport à la propriété sélectionnée au sein de l'entité. En cas de sélection d'une seule propriété/colonne de la signature de la méthode est jolie, mais pour deux ou plus, elle sera l'Objet de[] ou de la Liste<Object[]> qui sont méchants.
Il est. Les Projections ne sont pas pris en charge dans la requête de dérivation mécanisme actuellement, mais si vous définissez manuellement la requête, vous pouvez en fait utiliser une requête de déclaration comme à l'affiche originale a montré. L'exception (s)qu'il voit n'est pas causée par le code (s)il montre, voir ma réponse à la question.
OriginalL'auteur ragnor
Le code que vous a montré fonctionne ou devrait fonctionner comme prévu. C'est tout simplement ne pas causer de l'exception vous de voir :).
L'exception est en se référant à un
Trade
, ce qui semble indiquer que vous avez un référentiel pourTrade
quelque part qui semble renvoyer à un objet manquant. Le code que vous avez indiqué n'est certainement pas à l'origine de l'exception. Cela peut ne pas être le cas que vous êtes à la définition de la requête manuellement de sorte que la requête de dérivation mécanisme n'a même pas de coup de pied dans le repo vous ai montré.J'ai poussé un cas de test pour vous de le voir en action.
OriginalL'auteur Oliver Drotbohm