2017-06-16 85 views
1

我使用Spring DATA JPA和選擇@Query註釋創建查詢(而不是使用從方法名創建NamedQueries和查詢) 我有一個數據倉庫,如下春數據倉庫Implenation

public interface EventRepository extends CrudRepository<Event, Long> { 
    @Query("select e from Event e where e.name = :eventName) 
    public List<Event>findEventByName(String eventName); 
} 

界面看起來不錯按照Spring的參考文檔,它已經足夠了。

但我需要一個impl類,因爲除了上面我還需要其他許多方法。

我面臨着2個問題,當我創建

  1. 它的要求來實施EventRepository所有方法,findEventByName方法包含在接口自EventRepositoryImpl的Java實現EventRepository

    爲什麼我需要在默認地將Impl實現一遍類?
  2. 它的要求來實施CrudRepository所有的方法,我知道它的每OOPS的設計,但也有許多方法

因此,對於這些問題,我可以定義我的EventRepositoryImpl抽象, 這似乎是工作的罰款。

但是當Spring使用抽象類作爲bean時,我是否需要擔心其他事情? 或有沒有一種優雅的方式來解決這個問題。

感謝您的幫助。

回答

2

您不必實現所有這些方法都不創建抽象類。看看官方documentation

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

class UserRepositoryImpl implements UserRepositoryCustom { 
    public void someCustomMethod(User user) { 
    // Your custom implementation 
    } 
} 

interface UserRepository extends CrudRepository<User, Long>, UserRepositoryCustom { 
    // Declare query methods here 
} 
+0

感謝您的回答。 –