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