2015-07-11 2 views
1

Мы можем написать собственную реализацию репозитория:Данные весны jpa. Частичный пользовательский репозиторий implemantation

interface UserRepositoryCustom { 
    public void someCustomMethod(User user); 
} 

class UserRepositoryImpl implements UserRepositoryCustom { 

    public void someCustomMethod(User user) { 
    // Your custom implementation 
    } 
} 

Но что, если я хочу настроить только некоторые методы? Например:

interface UserRepositoryCustom { 
    public User findByFirstName(String firstName); 

    @Query("select u.firstName from User u where u.age > 18") 
    public Set<String> findAllAdultUsers(); 

    public void someCustomMethod(User user); 
} 

class UserRepositoryImpl implements UserRepositoryCustom { 
    //I want implement only this method 
    public void someCustomMethod(User user) { 
    // Your custom implementation 
    } 
} 

Если я объявить класс, который реализует интерфейс, я должен реализовать все методы, но я хочу, чтобы написать собственную логику только для одного метода. Можно ли это сделать? Может быть, я могу сделать этот класс абстрактным? Будет ли весна данных решить это?

+0

См., Если [этот пост] (http://stackoverflow.com/questions/28361275/how-to-reference-the-normal-spring-data-repo-from-a-custom-implementation/28368972#28368972) помогает. – manish

ответ

2

Я думаю, что только решение состоит в том, чтобы разделить методы на 2 интерфейса: сначала - для метода весовых запросов, а во-вторых - для пользовательской реализации, как показано в документе: http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.single-repository-behaviour.

Но я думаю, что решение с абстрактным классом было бы более естественным и логичным: вы предоставляете только необходимые реализации методов, а данные о пружинах - все остальное для вас.

Смежные вопросы