Spring Boot + DocumentDB自定义查询以搜索文档

时间:2018-09-27 05:39:21

标签: spring-boot azure-cosmosdb azure-java-sdk

我有一个Spring Boot + DocumentDB应用程序,我们需要在其中实现搜索API,搜索字段是嵌套Json的一部分,如下所示:

{
  "id":"asdf123a",
  "name":"XYZ",
  add{
      "city":"ABC"
      "pin":123456,  
     }
 } 

我需要使用name =“ XYZ”和city =“ ABC”进行搜索,我正在尝试使用以下代码,但以某种方式无法检索记录。  但是我只能使用名称或ID进行检索,而不能使用名称和城市或仅作为嵌套JSON一部分的城市进行检索。

Employee{
private String id;
private String name;
private Address add
/*Getter and Setters {} */
}

Address{
private String city;
private Long pin;
/*Getter and Setters {} */
}

public class EmployeeController {
EmployeeRepository repository;

@Autowire
EmployeeController (EmployeeRepository repository){
this.repository = repository;
}

@GetMapping(value = "/search", produces = APPLICATION_JSON_VALUE_WITH_UTF8)
public ResponseEntity<?> Search (@RequestParam ("name")String name, 
                                 @RequestParam("city") String city){    

 return new ResponseEntity <> (repository
                           .findByNameLikeAndAddressCityLike(
                                   name, city), 
                                 HttpStatus.OK
                          );
 }
}

@Repository
public interface EmployeeRepository extends DocumentDbRepository<Employee, 
String> {

Optional<Employee>findByNameLike(String name); // Perfectly working

Optional<Employee>findByAddressCityLike(String city); // Not working 

Optional<Employee>findByNameLikeAndAddressCityLike(String name, String 
city); // Not Working

}

也像Spring JPA一样,我们使用@Query触发自定义/本机查询,如果有的话,是否存在任何DocumentDB注释,请通过示例或文档指导我。寻找帮助

0 个答案:

没有答案