2011-08-03 25 views
1

我試圖編寫一個查詢來識別並返回所有根實體(即沒有祖先的實體)。最初我打過電話Query.setAncestor(null)但後來從datastore Query docs發現,這不起作用:我如何查詢App Engine DataStore中的根實體(Java)

傳遞null作爲參數傳遞給Query.setAncestor(字符串祖先)沒有祖先不會查詢實體(這種類型的查詢目前不支持)。

所以,現在我有點卡住了,因爲查詢API包含的內容我無法弄清楚如何構造一個查詢來標識所有根實體。

這必須是應用程序的功能,所以我正在尋找這編程工作,而不是一些人工干預wnich要求我登錄到管理控制檯,然後點擊一個按鈕:-)

任何人都知道一個解決方案這個怎麼做?

乾杯,

埃德

回答

1

您將需要一個屬性添加到您的模型,你可以查詢。也許是一個名爲is_root或類似的布爾值。

+0

感謝羅伯特,這似乎是明智的。我曾想知道是否應該創建一個特殊的_root_祖先並將其設置爲根實體,但我認爲您的建議要簡單得多,並且不會混淆實體的祖先/路徑。乾杯。 –

0

正如文檔所指出的,沒有辦法做到這一點 - 除了像@羅伯特所建議的那樣解決它。如果你告訴我們你想達到的目標 - 而不是你想如何實現目標 - 或許我們可以提供一個關於如何最好地實現目標的建議。

+0

嗨,尼克,道歉,如果這是不明確的最初的帖子 - 我以爲我已經明確指出我想實現什麼,而沒有任何如何:-)重新嘗試我想要實現的:我試圖獲取應用程序數據存儲區中所有根級別實體的列表。無論如何,正如你所說@羅伯特的答案在這裏是適當的,應該爲我的目的服務於此。謝謝。 –

+0

@Edd我的意思是,你到底在做什麼?如果您正在嘗試執行此類查詢,則表明您的數據模型可能並不理想,並且我們可能會提出一種替代方法來建模效果更好的數據。 –

+0

@NickJohnson我很喜歡這樣的建議。我的結構是這樣的,我擁有代表社區標籤/標籤的'Tag'根級實體和'UserTag'的父類是用戶(自定義實體,而不是真正的'用戶'對象)的子類。我想查詢所有社區標籤,並且不希望將它們放在同一個實體組中,因爲許多用戶可能會同時添加/編輯標籤。對於如何構建數據存儲數據的任何建議以及關於進一步閱讀的任何建議,概念性地構建數據存儲數據一般都將受到極大的讚賞。 – willlma

相關問題