2

Ich habe versucht, eine Spring-Boot-Anwendung zu erstellen. In meiner Anwendung möchte ich einige benutzerdefinierte Methoden hinzufügen, um die Daten zu speichern, anstatt die Standardspeichermethode zu verwenden.Spring Data JPA benutzerdefinierte Methode verursacht PropertyReferenceException

Meine Anwendung Einstiegspunkt ist so etwas wie dieses:

@Configuration 
@ComponentScan 
@EnableJpaRepositories(repositoryImplementationPostfix = "CustomImpl") 
@Import(RepositoryRestMvcConfiguration.class) 
@EnableAutoConfiguration 
@PropertySource("application.properties") 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args);   
    } 

} 

ich diese Linie repositoryImplementationPostfix geändert haben sogar Impl aber es hat nicht funktioniert.

Mein CrudRepository

@RepositoryRestResource 
public interface TaRepository extends CrudRepository<Ta, Integer> ,TestRepository{ 


    List<Ta> findByName(@Param("name") String name); 

} 

My Custom Repository:

public interface TestRepository { 
    public void myCustomMethod(TestDto dto); 
} 

My Custom Repository Impl

public class TestRepositoryCustomImpl implements TestRepository{ 

    @PersistenceContext 
    private EntityManager em; 
    @Override 
    public void myCustomMethod(TestDto model){ 
} 

HINWEIS:

Wenn ich meine CrudRepostory aus dem erwähnten dies zu ändern:

@RepositoryRestResource 
    public interface TaRepository extends CrudRepository<Ta, Integer> { 


     List<Ta> findByName(@Param("name") String name); 

    } 

alles funktioniert. Aber nicht mit der Implementierung der benutzerdefinierten Methode.

+0

Was sagt es? Irgendwelche Fehler? – nurgasemetey

+0

verursacht durch: org.springframework.data.mapping.PropertyReferenceException: Keine Eigenschaft myCustomMethod gefunden für Typ Ta! –

+0

http://stackoverflow.com/questions/20777785/org-springframework-data-mapping-propertyreferenceexception-no-property-catch-f - Dieser Link besagt, dass Sie 'TestRepositoryCustomImpl' in' TaRepositoryCustomImpl' und 'TestRepository' ändern müssen 'TaRepositoryCustom' – nurgasemetey

Antwort

0

Für Spring-Daten JPA @Repository oder @RepositoryRestResource müssen Sie nie ein benutzerdefiniertes Interface implementieren. Für jede einfache Abfrage können Sie eine beliebige Methode erstellen. Bitte folgen Sie den einfachen Anweisungen.

http://docs.spring.io/spring-data/jpa/docs/1.4.1.RELEASE/reference/html/jpa.repositories.html

Für eine komplexe Abfrage, die Sie JpaSpecificationExecutor verwenden können.

How can I create a Predicate from a HQL query?

+0

Dies deckt nicht den Fall ab, wo Sie ein 2nd level Feld der Wurzel-Entity (ex: entity.field_sub_field) vorausholen müssen, das für andere Abfragen faul ist. –

Verwandte Themen