当前位置: 首页 > 知识库问答 >
问题:

Spring Solr存储库

傅高逸
2023-03-14

尝试从方法名生成查询时出错。然而,我可以使用其他已经在那里的。findall()...等等。知道为什么吗?

@Configuration
@EnableSolrRepositories
public class SolrConfig {
    private static final String SOLR_CORE = "solr.core";
    static final String SOLR_HOST = "solr.host";
    @Resource
    private Environment environment;
    @Bean
    public HttpSolrClient solrClient() throws Exception {
       return new HttpSolrClient.Builder(environment.getProperty(SOLR_HOST)).build();
    }

    @Bean
    public SolrOperations solrTemplate() throws Exception {
       return new SolrTemplate(solrClient(),environment.getProperty(SOLR_CORE));
    }
}

实体

@SolrDocument(solrCoreName = "Address")
public class AddressSolr {
    @Id
    @Field
    private String id;
    @Field
    private String Street;
}

存储库

public interface SolrAddressRepository extends SolrCrudRepository<AddressSolr, String> {

    List<AddressSolr> findByStreet(String name);
}

应用程序.属性

solr.host=http://localhost:8085/solr
solr.core=Address
@Service
public class SolrService {
    public static SolrAddressRepository solrRepositoryX;

    @Resource
    private SolrAddressRepository solrAddressRepository;

    @PostConstruct
    private void init() {
        solrRepositoryX = this.solrAddressRepository;
    }
}
field name="id" type="uuid" indexed="true" stored="true" required="true"
field name="Street" type="text_exact" indexed="true" stored="true"
<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>7.2.1</version>
</dependency>
<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-core</artifactId>
    <version>4.1.0</version>
    <exclusions>
        <exclusion>
            <artifactId>slf4j-jdk14</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.2</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-solr</artifactId>
    <version>2.0.5.RELEASE</version>
</dependency>
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solrService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solrAddressRepository': Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.springframework.data.solr.repository.support.SolrRepositoryFactory$SolrQueryLookupStrategy.resolveQuery(Ljava/lang/reflect/Method;Lorg/springframework/data/repository/core/RepositoryMetadata;Lorg/springframework/data/repository/core/NamedQueries;)Lorg/springframework/data/repository/query/RepositoryQuery;
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:311) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at com.remsdaq.Runner.main(Runner.java:9) [classes/:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solrAddressRepository': Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.springframework.data.solr.repository.support.SolrRepositoryFactory$SolrQueryLookupStrategy.resolveQuery(Ljava/lang/reflect/Method;Lorg/springframework/data/repository/core/RepositoryMetadata;Lorg/springframework/data/repository/core/NamedQueries;)Lorg/springframework/data/repository/query/RepositoryQuery;
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:512) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:486) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:615) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:308) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    ... 17 common frames omitted
Caused by: java.lang.AbstractMethodError: org.springframework.data.solr.repository.support.SolrRepositoryFactory$SolrQueryLookupStrategy.resolveQuery(Ljava/lang/reflect/Method;Lorg/springframework/data/repository/core/RepositoryMetadata;Lorg/springframework/data/repository/core/NamedQueries;)Lorg/springframework/data/repository/query/RepositoryQuery;
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.(RepositoryFactorySupport.java:416) ~[spring-data-commons-1.11.4.RELEASE.jar:na]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:206) ~[spring-data-commons-1.11.4.RELEASE.jar:na]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251) ~[spring-data-commons-1.11.4.RELEASE.jar:na]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237) ~[spring-data-commons-1.11.4.RELEASE.jar:na]
    at org.springframework.data.solr.repository.support.SolrRepositoryFactoryBean.afterPropertiesSet(SolrRepositoryFactoryBean.java:91) ~[spring-data-solr-2.0.5.RELEASE.jar:na]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    ... 29 common frames omitted

方法关键字:https://docs.spring.io/spring-data/solr/docs/1.2.0.rc1/reference/htmlsingle/

共有1个答案

范华清
2023-03-14

您使用的Spring Data Solr版本与您使用的Spring Data Commons版本不兼容。

由于您已经用spring-boot标记了您的问题,我想这涉及到Spring boot的依赖关系管理。它将为您管理Spring Data Commons和Spring Data Solr的版本。但是,您已经在POM中覆盖了Spring Data Solr的版本:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-solr</artifactId>
    <version>2.0.5.RELEASE</version>
</dependency>

Spring Data Solr 2.0.x使用Spring Data commons 1.12.x,但您使用的是1.11.x。

假设您使用的是Spring Boot,那么您可以使用Spring Boot1.4.x并删除版本重写。Spring Boot 1.4.x使用Spring Data Hopper释放装置。Spring Data Solr 2.0.x是漏斗释放程序的一部分。

如果您没有尝试使用Spring Data Solr 2.0.x,则可以使用Spring Boot 1.5.x或2.0.0,并再次删除版本覆盖。

 类似资料:
  • 搜索仓库和镜像 你可以使用 Docker 来搜索所有公开可用的仓库和镜像。 $ docker search ubuntu 这将通过 Docker 提供的关键字匹配来显示您可用的仓库列表。 私有仓库将不会显示到仓库搜索结果上。你可以通过 Docker Hub 的简况页面来查看仓库的状态。 仓库 你的 Docker Hub 仓库有许多特性。 stars 你的仓库可以用星被标记,你也可以用星标记别的仓

  • 大部分 Flask 应用程序会在某一时刻处理存储数据。存在许多不同的方式来存储数据。寻找最好的一种方式完全取决于你要存储的数据。如果你存储关系型数据(例如,一个用户有多篇文章,每篇文章都有一个作者等等),一个关系型数据库可能是一种合适的方式。其它类型的数据可能适合 NoSQL 数据存储,像 MongoDB。 我将不会告诉你们该如何为你的应用程序选择数据库引擎。有些人会告诉你 NoSQL 是唯一的选

  • 存储包括块存储和对象存储。 块存储 块存储用于存储虚拟机和裸金属等系统盘和数据盘的磁盘文件。 存储桶 存储桶用于存储用户的任意文件。 文件存储 文件存储NAS是一个可共享访问,弹性扩展的高性能分布式文件系统,可为公有云上的虚拟机提供共享存储服务。

  • 存储包含虚拟机硬盘、为硬盘创建的快照、为主机所有硬盘创建的快照及自动快照策略等内容。 硬盘 硬盘是虚拟机的存储文件。 硬盘快照 硬盘快照即基于虚拟机硬盘创建的快照。 主机快照 主机快照即同时为虚拟机上所有硬盘创建快照。 自动快照策略 自动快照策略即通过设置快照策略周期性的对指定硬盘创建快照。

  • 为了管理存储,Kubernetes提供了Secret用于管理敏感信息,ConfigMap存储配置,Volume、PV、PVC、StorageClass等用来管理存储卷。

  • 本地存储与会话存储都为针对QQ帐号隔离。 支持KV存储。 本地存储与会话存储区别 本地存储 本地存储会将数据写入到文件,不会随着游戏结束而被删除。 会话存储 会话存储将保持在内存中,当前游戏结束后将被删除

  • 附件表 Table 1. 基本概念 名称 定义 示例 文件系统 一个以树状结构组织的,位于存储设备(如物理磁盘,分区)上的保存数据的文件或文件夹。树状结构的根部是 /,且树状结构的任何位置可以在任意时间扩展,添加新的由物理磁盘或分区构成的文件系统。 查看某路径下磁盘使用情况 # du # du -h mounting 添加一个新的树状结构文件系统到已知文件系统的过程叫 mounting。 moun

  • 我正在尝试实现一个简单的REST服务,该服务基于具有Spring启动和Spring数据Rest的JPA存储库。(请参阅此教程)如果将以下代码与 gradle 一起使用,则运行良好: 为了让事情变得更简单,我使用Spring boot CLI(“Spring run”命令)尝试了相同的代码。 不幸的是,这似乎不起作用@RepositoryRestResource似乎无法像@RestControlle