Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring data solr HttpSolrClient不使用实体的核心注释_Java_Spring_Solr_Spring Data_Spring Data Solr - Fatal编程技术网

Java Spring data solr HttpSolrClient不使用实体的核心注释

Java Spring data solr HttpSolrClient不使用实体的核心注释,java,spring,solr,spring-data,spring-data-solr,Java,Spring,Solr,Spring Data,Spring Data Solr,配置如下 @Configuration @EnableSolrRepositories(basePackages={"com.foo"}, multicoreSupport=true) public class SolrConfig { @Value("${solr.host}") String solrHost; @Bean public SolrClient solrClient() { return new HttpSolrClient(solr

配置如下

@Configuration
@EnableSolrRepositories(basePackages={"com.foo"}, multicoreSupport=true)
public class SolrConfig {

    @Value("${solr.host}") String solrHost;

    @Bean
    public SolrClient solrClient() {
        return new HttpSolrClient(solrHost);
    }

    @Bean
    public SolrTemplate solrTemplate() {
        return new SolrTemplate(solrClient());
    }
}
我有一个简单的实体:

@SolrDocument(solrCoreName = "core1")
public class MyEntity implements Serializable {
如果使用SolrTemplate执行查询,则不会在文档上使用coreName注释:

Page results = solrTemplate.queryForPage(search, MyEntity.class);
我得到一个例外:

org.springframework.data.solr.UncategorizedSolrException: Error from server at http://localhost:8983/solr: Expected mime type application/octet-stream but got text/html.
[..]
Problem accessing /solr/select
[...]
<title>Error 404 Not Found</title>

works

spring data的伙计们确认这是预期的行为,模板不会从实体注释中读取核心。
因此,在
multicreupport=true
环境中,如果要同时使用存储库和模板,必须创建2个bean: 对于存储库,请使用基本模板:

    @Bean
    public SolrTemplate solrTemplate() {
        return new SolrTemplate(solrClient());
    }
对于注射,您将有另一个:

    @Bean
    public SolrTemplate customTemplate() {
        return new SolrTemplate(solrClient(), "core1");
    }
显然,如果您不需要
multicoreSupport=true
则不需要

    @Bean
    public SolrTemplate customTemplate() {
        return new SolrTemplate(solrClient(), "core1");
    }