J'essaie d'implémenter un référentiel Spring personnalisé. J'ai l'interface:
public interface FilterRepositoryCustom {
List<User> filterBy(String role);
}
la mise en oeuvre:
public class FilterRepositoryImpl implements FilterRepositoryCustom {
...
}
et le référentiel "principal", qui étend mon référentiel personnalisé:
public interface UserRepository extends JpaRepository<User, String>, FilterRepositoryCustom {
...
}
J'utilise Spring Boot et, selon la docs :
Par défaut, Spring Boot activera la prise en charge du référentiel JPA et recherchera le package (et ses sous-packages) où @SpringBootApplication est situé.
Lorsque j'exécute mon application, j'obtiens cette erreur:
org.springframework.data.mapping.PropertyReferenceException: Aucune propriété filterBy trouvée pour le type User!
Le problème ici est que vous créez FilterRepositoryImpl
mais que vous l'utilisez dans UserRepository
. Vous devez créer UserRepositoryImpl
pour que cela fonctionne.
Lisez cette doc pour plus de détail
Fondamentalement
public interface UserRepositoryCustom {
List<User> filterBy(String role);
}
public class UserRepositoryImpl implements UserRepositoryCustom {
...
}
public interface UserRepository extends JpaRepository<User, String>, UserRepositoryCustom {
...
}
J'ai eu le même problème dans un de mes projets. J'ai résolu le problème en ajoutant une ligne dans mon pom.xml
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
<include>com/my/package/entities/*.Java</include>
<include>com/my/package/repositories/*.Java</include>
<include>com/my/package/repositories/impl/*.Java</include> <!-- add this -->
</includes>
</configuration>
</plugin>