2014-09-10 88 views
2

我試圖用Spring Boot和Elastic Search安裝一個應用程序。此應用程序已經使用Spring Data JPA存儲庫來保存我的實體。我嘗試在啓用ElasticSearch配置的情況下運行應用程序時遇到的問題是,當掃描存儲庫時,我收到了異常。Spring Boot +彈性搜索

我得到以下異常:

Caused by: java.lang.IllegalArgumentException: Unable to obtain mapping metadata for int! 

我的倉庫是這樣定義的:

@Repository 
public interface AdminUserRepository extends PagingAndSortingRepository<AdminUser, Long> { 

    /** 
    * Returns an AdminUser that match the email specified by parameter. 
    * @param email AdminUser email. 
    * @return An AdminUser instance. 
    */ 
    AdminUser findByEmail(final String email); 

    /** 
    * Returns an AdminUser that match the email and business name specified by parameter. 
    * @param email AdminUser email. 
    * @param businessName Business Name. 
    * @return number of matching instances. 
    */ 
    int countByEmailAndBusinessName(final String email, final String businessName); 
} 

似乎異常的發生是由於數查詢返回的簽名INT。儘管這個存儲庫可以很好地與JPA協同工作,但它會引發異常,從而實現彈性搜索。

我想知道存儲庫中的返回類型是否存在任何限制,或者我在配置中丟失了某些內容。

我的Java配置類:

@Configuration 
@EnableElasticsearchRepositories 
public class ElasticSearchConfig { 
} 

謝謝!

回答

9

它看起來像Spring Data Elasticsearch找到一個旨在與Spring Data JPA一起使用的存儲庫。當您在同一應用程序中使用多個Spring Data模塊時,應該將這些存儲庫放在不同的包中,然後在@Enable...註釋中引用此包。

例如:

@Configuration 
@EnableElasticsearchRepositories("com.foo.elasticsearch") 
@EnableJpaRepositories("com.foo.jpa") 
public class MyConfiguration { 

}