2017-05-19 20 views
0

를 사용하여 자바의지도 내에서 데이터를 검색하는 방법 : 모델에서나는 다음과 같은 시나리오에 대한 findBy 스프링 쿼리 작성에 도움이 필요 findBy 스프링 저장소

"data":{ 
"key1":"value1", 
"key2":"value2" 
} 

: 나는 다음과 같은 구조의 JSON 문서가 을 , 나는이 맵을 다음과 같이 맵핑했습니다.

Map<String, Object> data; 
public Map<String, Object> getData() { 
     return data; 
    } 
    public void setData(Map<String, Object> data) { 
     this.data = data; 
    } 

이제 스프링 저장소를 사용하여 데이터에서 value2를 가져오고 싶습니다. DB에 couchbase를 사용하고 있습니다.

도움이 될 것 같습니다.

미리 감사드립니다.

+0

어떻게 했습니까? http://docs.spring.io/spring-data/couchbase/docs/3.0.0.M3/reference/html/#datatypes –

+0

findBy를 사용하여 데이터를 가져올 수 있습니다. 예를 들어 key2가지도 데이터 외부에 있으면 findByKey2()로 쿼리 할 수 ​​있습니다. 하지만 제 경우에는 내부 데이터입니다. 해당 데이터를 가져 오기 위해 findBy 쿼리를 프레임하는 방법은 무엇입니까? –

+0

나는 할 수 있다고 생각하지 않는다. 왜 개체를 검색 한 다음 리포지토리를 호출하는 메서드를 사용하여 해당 개체에서 key2를 반환하지 않을까요? –

답변

0
@Entity 
public class Obj{ 
    private Integer id; 
    private String name; 
    //getter and setter 
} 

@Controller 
public class ControllerClass{ 
    @Autowired 
    private ObjService objService; 

    @GetMapping("/getObjectById/{id}") 
    @ResponseBody 
    public Map<String, Obj> getMapDetails(@PathVariable Integer id) { 
     Map<String, Obj> map = new HashMap<>();  
     map.put("data",objService.findById(id));  
     /*here you can able to N of times 
      Ex: map.put("data",service2.findById(id)); 
      and etc... 
     */ 
     return map; 
    } 
} 

@Service 
public Class ObjService{ 
    public Obj findById(Integer id){ 
     //logic 
    } 
} 

your Response will be like below: 
{"data":{ 
     "id":1, 
     "name":"value2" 
    } 
}