Obtenir non Valide “dérivée de la requête” erreur toute la place dans notre source de Données JpaRepository interfaces en STS 3.1
Nous avons mis en œuvre nos référentiels exactement comme l'a démontré dans le Ressort des Données de la documentation. Tout allait bien jusqu'à ce que nous avons mis à niveau à partir de STS 2,9 à STS 3.1. Toutes les tentatives pour obtenir ces erreurs à disparaître ont échoué, et, dans certains cas, ils n'ont même pas de sens! Ils ne correspondent à aucune des propriétés de l'interface ou les entités utilisées!
Voici un exemple:
public interface CreditNotesRepository extends JpaRepository<CreditNotes, Long> {
CreditNotes findCurrentCreditNotes(Long shipmentDetailId);
}
La findCurrentCreditNotes
est une requête nommée notre entité. Ce code s'exécute parfaitement bien.
@NamedQueries({
@NamedQuery(name = "CreditNotes.getCount", query = "SELECT COUNT(f) FROM CreditNotes f"),
@NamedQuery(name = "CreditNotes.findCurrentCreditNotes", query =
"SELECT creditNotes FROM CreditNotes creditNotes"
+ " WHERE creditNotes.shipmentDetail.shipmentDetailId = ?1 "
+ " AND creditNotes.notesSeqNumber = (SELECT max(creditNotes2.notesSeqNumber) FROM CreditNotes creditNotes2"
+ " WHERE creditNotes.shipmentDetail.shipmentDetailId = creditNotes2.shipmentDetail.shipmentDetailId)")
})
Et de l'erreur, nous obtenons:
Invalid derived query! No property find found for type ca.cole.freight.model.CreditNotes
Bien que c'est juste un drapeau (n'affecte pas de compilation), il est ennuyeux et confus. Quelqu'un peut-il éclairer sur ce point? Et il m'expliquer comme je suis de 6 ans! 😉
Vous devez vous connecter pour publier un commentaire.
C'est un IDE erreur expliqué dans le post suivant:
http://forum.springsource.org/showthread.php?138585-Invalid-derived-query!-No-property-delete-found-for-type-java-lang-Object
En attendant, vous pouvez désactiver la validation en préférences/printemps/projet validateurs de Données/validator décochez invalide dérivé de la requête et STS l'habitude de jeter le marqueur le plus.
À la post sur le Forum du Printemps, Printemps de l'Équipe a annoncé que
Je ne cochez pas cette version. Mais je suis en utilisant 3.5.0.La LIBÉRATION et le problème revient! Ma solution est de décocher Invalide Dérivé de la Requête
Il y a aussi la solution de contournement pour ce. Ajouter
@Query
annotation sur votre définition de la méthode dans Votre dépôt, sans JPQL/requête SQL définie.Ici est un exemple :
Dans ce cas, la requête nommée
OrderModel.findByFirstNameAndAgeNotZero
sera utilisé. Votre Eclipse erreurInvalid derived query
devrait aussi disparaître sans avoir besoin de la désactivation de la validation tel que décrit par @Tuan DangVérifié sur Eclipse 4.5.1 avec le Printemps installé le plugin pour
@NamedQuery
et@NamedNativeQuery
.Je viens de passer par moi-même. Malheureusement, la mise en œuvre de Printemps de la modification des Données entre 1.1 et 1.2. Il ne prend plus en charge le
<repository>
déclaration XML. Vous pouvez configurer une coutume postfix, mais par défaut, il s'attend à un haricot de nom de classe<InterfaceName>Impl
. Si il ne peut pas trouver la coutume référentiel de mise en œuvre, vous commencez à recevoir des erreurs comme celle que vous êtes à la rencontre. C'est en essayant de créer des méthodes de requête pour les objets basés sur des noms de méthodes dans votre interface.Une alternative à votre source de Données de la version à 1,1 et spécifier un schemalocation de
http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd
dans votre XML.