55 votes

Aucune propriété trouvée pour le type ... référentiel Spring Data personnalisé

Je suis en train de mettre en œuvre une coutume Printemps référentiel. J'ai de l'interface:

public interface FilterRepositoryCustom {
    List<User> filterBy(String role);
}

la mise en œuvre:

public class FilterRepositoryImpl implements FilterRepositoryCustom {
...
}

et le "référentiel", l'extension de mon dépôt personnalisée:

public interface UserRepository extends JpaRepository<User, String>, FilterRepositoryCustom {
...
}

Je suis à l'aide de Spring Boot, et, selon les docs:

Par défaut, le Printemps de Démarrage permettra JPA référentiel de support et de regarder dans le paquet (et de ses sous-paquets) où @est SpringBootApplication situé.

Quand je lance mon application, j'obtiens cette erreur:

org.springframework.les données.la cartographie.PropertyReferenceException: Pas de propriété filterBy trouvé pour le type d'Utilisateur!

86voto

Aman Tuladhar Points 4046

Le problème ici est que vous créez FilterRepositoryImpl mais vous l'utilisez dans UserRepository . Vous devez créer UserRepositoryImpl pour que cela fonctionne.

Lisez ce document pour plus de détails

Fondamentalement

 public interface UserRepositoryCustom {
    List<User> filterBy(String role);
}

public class UserRepositoryImpl implements UserRepositoryCustom {
...
}

public interface UserRepository extends JpaRepository<User, String>, UserRepositoryCustom {
...
}
 

0voto

Bruno 82 Points 132

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>
 

-5voto

Java Man Points 1

À l'ancienne:

Entity aThing = repository.findOne (1L); Nouvelle façon:

Facultatif aThing = repository.findById (1L);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X