2016-09-21 63 views
2

我一直在試圖創建一個spring引導應用程序。在我的應用程序中,我想添加一些自定義方法來保存數據,而不是使用默認的保存方法。引發PropertyReferenceException的Spring數據JPA自定義方法

我的應用程序入口點是這樣的:

@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);   
    } 

} 

我已經改變了這一行repositoryImplementationPostfix甚至默認地將Impl,但沒有奏效。

我CrudRepository

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


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

} 

我的自定義庫:

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

我的自定義庫默認地將Impl

public class TestRepositoryCustomImpl implements TestRepository{ 

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

注:

如果我改變自提這個我CrudRepostory:

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


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

    } 

一切工作正常。但與自定義方法實現不同。

+0

它說什麼?任何錯誤? – nurgasemetey

+0

引起:org.springframework.data.mapping.PropertyReferenceException:沒有屬性myCustomMethod在類型Ta中找到! –

+0

http://stackoverflow.com/questions/20777785/org-springframework-data-mapping-propertyreferenceexception-no-property-catch-f - 這個鏈接表示您必須將'TestRepositoryCustomImpl'更改爲'TaRepositoryCustomImpl'和'TestRepository'以'TaRepositoryCustom' – nurgasemetey

回答

0

對於彈簧數據JPA @Repository@RepositoryRestResource您永遠不需要實現自定義接口。對於任何簡單的查詢,您可以創建任何類型的方法,請按照簡單指南進行操作。

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

對於複雜的查詢,你可以使用JpaSpecificationExecutor。

How can I create a Predicate from a HQL query?

+0

這不包括你必須預先獲取其他查詢惰性的第二級字段(例如:entity.field.subfield)的情況。 –

相關問題