J'ai un @Entity Video
ayant une relation un-à-plusieurs avec un List<Tag> tags
dans l'un de ses champs. J'utilise le @Repository
suivant avec Spring Data pour obtenir les tags les plus populaires:
@Repository
public interface TagRepository extends CrudRepository<Tag, Integer>{
@Query("SELECT t FROM Tag t WHERE (SELECT SUM(v.views) FROM Video v WHERE t MEMBER OF v.tags) > 0")
public List<Tag> findMostViewedTags(int maxTags);
}
La Query est traitée et considérée comme valide par Spring , j'ai testé leSQLgénéré généré localement et elle a renvoyé 2 Tags . Cependant, dans mon code, je reçois la valeur Null lorsque j'appelle la méthode findMostViewedTags (100).
La stratégie de recherche de requête est la valeur par défaut "CREATE_IF_NOT_FOUND".
Null
au lieu d'un List<Tag>
avec size () 2?List<Object>
est la valeur de retour de la méthode dans l'interface définie, la méthode ne doit jamais renvoyer Null
.J'ai connu un problème similaire. La cause était que j'utilisais Mockito et que je ne me suis pas moqué des données avec when()
.