2011-10-17 3 views
0

Google App Engine의 저수준 데이터 스토어에 대해 조금 이나마 의문의 여지가 있습니다. 나는이 같은 문서 구조를 필요 DET 요소가지도가 너무이지만, 속성을 인덱스로 불행하게도 데이터 저장소가지도에 동의하지gae-datastore의 색인 된지도로 등록 정보

{infNfe id="1234" 
    det={nItem="1",prod="prodname"}, 
    det={nItem="2",prod="prodname"}, 
    det={nItem="3",prod="prodname"} 
} 

하는 것으로. 나는 어떤 자식 개체를 쿼리 할 때

Entity i = new Entity("infNfe","key"); 
i.setProperty("id",1234); 
Entity det1 = new Entity("det",i.getKey()); 
det1.setProperty("nItem",1); 
det1.setProperty("prod","prodname"); 
..Others dests.. 

그러나이, 내가 불완전한 참조를 얻을 :

몇 가지 예를 잠금, 내가 뭔가를 발견했다.

이 방법으로
Query dq= new Query("det"); 
dq.setAncestor(i.getKey()); 
..Printing result.. 
{nItem="1",prod="prodname"} 

나는 한 번에 하나의 DET 개체를 얻을 수 있습니다. 부모와 자녀를 한 번에받을 수있는 방법은 무엇입니까?

감사합니다 ..... 자식 방법

답변

0

문제는 당신이 새로운에서 적어도 (GET/풋/쿼리 결과 당 지불하기 때문에 비용을 의미하는 기관의 많은 끝낼 것입니다 가격).

Objectify는 이러한 쿼리를 수행하는 훌륭한 프레임 워크입니다.

class Det 
{ 
    long nItem; 
    String prod; 
} 

class InfNfe 
{ 
    @Id Long id; 
    @Embedded List<Det> dets; 
} 

그런 다음 객관화 다음과 같은

id = 1 
dets.nItem = [1, 2, 3, 4] 
dets.prod = ["A", "B", "C", "D"] 

같은 데이터를 저장, 당신은 다음을 지정할 수 있습니다됩니다 객관화를 사용하여지도를 수행하려면, 당신은 매핑 할 두 가지 유형으로 두 번째 클래스를 생성 어느 항목이 색인되어 있으며이 데이터의 일부를 기반으로 쿼리 할 수 ​​있습니다 (배열 중간에서 데이터를 쿼리하는 방법을 알지 못하더라도).