Spring Boot +弹性搜索

Mau*_*nti 3 elasticsearch spring-data spring-data-jpa spring-boot

我正在尝试使用Spring Boot和Elastic Search设置应用程序.此应用程序已使用Spring Data JPA存储库来保留我的实体.我尝试在启用ElasticSearch配置的情况下运行应用程序时遇到的问题是我在扫描存储库时遇到异常.

我收到以下异常:

Caused by: java.lang.IllegalArgumentException: Unable to obtain mapping metadata for int!
Run Code Online (Sandbox Code Playgroud)

我的存储库按以下方式定义:

@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);
}
Run Code Online (Sandbox Code Playgroud)

似乎由于返回int的计数查询的签名而发生异常.即使此存储库与JPA一起正常工作,它也会抛出一个启用弹性搜索的异常.

我想知道存储库中的返回类型是否有任何限制,或者我是否在配置中遗漏了某些内容.

我的Java配置类:

@Configuration
@EnableElasticsearchRepositories
public class ElasticSearchConfig {
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

And*_*son 10

看起来Spring Data Elasticsearch正在寻找一个用于Spring Data JPA的存储库.当您在同一个应用程序中使用多个Spring Data模块时,应将存储库放在单独的包中,然后在@Enable...注释上引用此包.

例如:

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

}
Run Code Online (Sandbox Code Playgroud)