1

我有 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 注释,如果有,请用示例或文档指导我。寻求帮助

4

0 回答 0