如何在 spring 数据 MongoRepository 中构建搜索端点

How to build a search endpoint in spring data MongoRepository

我正在尝试使用 spring 数据 MongoRepository 访问 mongodb 数据层。所以在这里我可以使用存储库端点执行基本的 CRUD 操作,但无法执行自定义搜索。

型号class:

@Document(collection = "merchant")
public class Merchant {

 @Id
 private String id;
 private Long zohoAccountRefId;
 private String businessId;
 private String businessName;
 private String businessAddress;
 private String businessPhone;
 private String description;
 private String businessEmail;
 private String accountType;
 private BusinessOwner businessOwner;
 private List<Product> products;
 private List<Plugin> plugins;
 private List<Service> services;
 @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
 private Date dateCreated;

 //getters and setters
}

存储库:

@RepositoryRestResource(collectionResourceRel = "account",path = "account")
public interface MerchantRepository extends MongoRepository<Merchant,String> {

  @RestResource(path = "businessName",rel = "businessName")
  List<Merchant> findByName(@Param("businessName") String businessName);
 }

当我尝试使用此代码时出现以下错误:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property name found for type Merchant!

这是实现它的正确方法吗?或者我得到的这个问题的解决方案是什么?

方法的名称很重要,它告诉 Spring 数据 MongoDB 如何构建查询。您已将方法命名为 findByName,因此 Spring 数据 MongoDB 正在尝试针对名为 name 的 属性 创建查询,但您没有任何属性 在您的商家 collection 中简单地命名为 name

要针对 Merchant.businessName 进行查询,您的方法应该是:

List<Merchant> findByBusinessName(@Param("businessName") String businessName);