2010-07-17 4 views
1

저는 JDO와 GAE를 배웠고 자신에 대해 매우 고심했습니다.JDO에서 자식 개체를 고유하게 식별하고 가져 오는 방법

난 그냥

public class Article { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 
    ... 
} 

이제 부모를 가진 할 필요가 없어 없었다 :

public class ArticleCollection { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 
    private long count 
    private Set<Article> articles; 
} 

그러나이 작업을 수행 한 후, 다음 코드는 ID로 기사를 가져 오기 위해 더 이상 작동합니다. 객체를 고유하게 식별하는 방법은 무엇입니까?

Article article = (Article)pm.getObjectById(KeyFactory.createKey(Article.class.getName(), id)); 

도움이 되었습니까?

답변

2

자녀의 키에는 부모 정보가 포함됩니다. 부모 ID가 포함 된 KeyFactory 메서드를 사용해야합니다.

createKey(Key parent, java.lang.String kind, long id) 
      Creates a new Key with the provided parent from its kind and ID. 

자세한 내용은 javadoc을 확인하십시오. 당신이 체인 addChild의 무리 getKey를 호출하기 전에 함께이야 수 있기 때문 형태의 계층 구조가 깊은 성장함에 따라 더 유용하게

Key key = new Builder("ArticleCollection", 123).addChild("Article", 1424).getKey(); 

: 당신이 뭔가를 할 수 있도록 편의를 위해 빌더 클래스도 있습니다.

기사의 부모를 모르는 경우 키로 얻는 대신 GQL 쿼리를 수행해야 할 것 같습니다.

+0

고마워, 어디서나이 정보를 찾을 수 없었다 !!! +1 – Jacob

관련 문제