Как построить конечную точку поиска в весенних данных MongoRepository - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь получить доступ к слою данных mongodb с помощью данных Spring MongoRepository. Таким образом, здесь я могу выполнять основные операции CRUD с использованием конечной точки хранилища, но не смог выполнить пользовательский поиск.

Класс модели:

@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!

Это правильный способ реализовать это? или какое решение для этой проблемы я получаю?

1 Ответ

0 голосов
/ 24 января 2019

Имя метода важно, оно сообщает Spring Data MongoDB, как построить запрос.Вы назвали метод findByName, поэтому Spring Data MongoDB пытается создать запрос к свойству с именем name, но в вашей коллекции Merchant нет свойства с именем просто name.

Для запроса к Merchant.businessName ваш метод должен быть:

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