java.lang.IllegalArgumentException: Paramètre avec cette position [1] n'existe pas

C'est mon référentiel:

@Repository
public interface MyRepository extends JpaRepository<Entity, Long> {

  public static final String DISTANCE = "((acos(sin(?1 * pi() /180) * sin(a.latitude * pi() /180) + cos(?1 * pi() /180) * cos(a.latitude * pi() /180) * cos((?2 - a.longitude) * pi() /180)) * 180 /pi()) * 60 * 1.609344) as distance";

  @Query("select new package.SearchResult(" + DISTANCE + ", a.addressOwner) from Address a group by a.addressOwner, col_0_0_ having col_0_0_ < ?3 order by col_0_0_")
  public Page<SearchResult> findClosestByCoordinates(double lat, double lng, double maxDistance, Pageable pageable);

}

Lorsque j'essaie d'exécuter cette méthode une exception se produit:

Paramètre avec cette position [1] n'existe pas; nested exception java.lang.IllegalArgumentException: Paramètre avec cette position [1] n'existait pas"]

Mais lorsque je remplace Page<SearchResult> avec List<SearchResult> tout fonctionne bien. Est-ce le Printemps bug ou quelque chose?

Mise à JOUR: je pense avoir trouvé ce qui est faux: lorsque TOUS les paramètres de prendre partie dans la clause where, tout est ok. Mais si au moins l'un d'entre eux n'est pas utilisée, elle échoue. Mais je ne comprends pas pourquoi il arrive avec une Page et de ne pas se produire lors de l'utilisation de la Liste. Et quelle est la meilleure façon de traiter avec elle?

Pourriez-vous s'il vous plaît poster SearchResult et de la classe d'Entité? De cette façon, votre question sera plus comme SSCCE et la chance d'obtenir une réponse sera augmenté.
Une stacktrace sera également très utile. BTW, essayez de remplacer col_0_0_ pour a.col_0_0_ dans la Requête
Avez-vous essayer de remplacer de position paramètres avec les paramètres nommés? J'ai également eu un problème avec plusieurs position params avec le même indice dans la requête, mais quand j'ai changé à nommé il n'y a pas d'erreur.
Je pense avoir trouvé ce qui est faux: lorsque TOUS les paramètres de prendre part à where clause, tout est ok. Mais si au moins l'un d'entre eux n'est pas utilisée, elle échoue. Mais je ne comprends pas pourquoi il arrive avec Page et ne se produit pas lors de l'utilisation de List. Et quelle est la meilleure façon de traiter avec elle?
quelle a été la solution?

OriginalL'auteur user3861812 | 2015-08-27