有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java找不到类型的属性

当运行我的代码从Solr获取数据时,它无法编译,出现异常:
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findSubscriptions found for type Subscriptions!

我没有发现命名不一致或缺少方法。 代码用于从Solr获取数据。我已经创建了一个文档,Solr正在“http://localhost:8983/solr/”上运行

(一)

      @RestController
      public class SubscriptionsController {

      @Autowired
      SolrSubscriptionsRepository solrSubscriptionsRepository; 

      @GetMapping("/subscriptions/{subscriptionId}")
      public Subscriptions getSubscriptions(@PathVariable Long subscriptionId) {

        solrSubscriptionsRepository.findSubscriptions(subscriptionId);
        return solrSubscriptionsRepository.findSubscriptions(subscriptionId);


      }

(二)

     @SolrDocument(collection= "Subscriptions")
     public class Subscriptions {

     @Id
     @Indexed(name="subscription_id", type="long")
     private Long subscriptionId;

     @Indexed(name="subscription_query", type="string")
     private String subscriptionQuery;

     @Indexed(name="subscription_type", type="string")
     private String subscriptionType;

     } 

(三)

     public interface SolrSubscriptionsRepository extends 
     SolrCrudRepository<Subscriptions, Long>{

     Subscriptions findSubscriptions(Long subscriptionId);

     }

(四)

      @Configuration
      @EnableSolrRepositories(basePackages="com.test.repository")
      @ComponentScan
      public class SolrConfig {

      @Value("spring.data.solr.host") String solrURL;

      @Bean
      public SolrClient solrClient() {
        return new HttpSolrClient.Builder(solrURL).build();
      }

      @Bean
      public SolrTemplate solrTemplate(SolrClient solrClient) throws Exception {
        return new SolrTemplate(solrClient);
        }
      }

(五) 应用程序。属性
spring.data.solr.host=http://localhost:8983/solr/


共 (1) 个答案

  1. # 1 楼答案

    解决方案1

    @Autowired
      SolrSubscriptionsRepository solrSubscriptionsRepository; 
    
      @GetMapping("/subscriptions/{subscriptionId}")
      public Subscriptions getSubscriptions(@PathVariable Long subscriptionId) {
    
        solrSubscriptionsRepository.findSubscriptions(subscriptionId);
        return solrSubscriptionsRepository.findById(subscriptionId);
      }
    

    解决方案2:

    @Autowired
      SolrSubscriptionsRepository solrSubscriptionsRepository; 
    
      @GetMapping("/subscriptions/{subscriptionId}")
      public Subscriptions getSubscriptions(@PathVariable Long subscriptionId) {
    
        solrSubscriptionsRepository.findSubscriptions(subscriptionId);
        return solrSubscriptionsRepository.findBySubscriptionId(subscriptionId);
      }
    
    public interface SolrSubscriptionsRepository extends SolrCrudRepository{
     Subscriptions findBySubscriptionId(Long subscriptionId);
     }