Java的documentation說,一個應用程序可以在事務期間執行的查詢,但只有當它包含祖先過濾器,但對於如何沒有文檔做到這一點。任何人都可以提供一些示例代碼,展示如何以最簡潔的方式實現此目的?查詢在與谷歌的App Engine(Java)的祖先過濾器事務
2
A
回答
0
如果您使用的是低級別數據存儲,則很容易,因爲「祖先」是數據存儲概念,而不是JDO/JPA概念AFAIK。
here是顯示查詢構造函數的祖先鍵的Javadoc鏈接
1
試試這個辦法:
// PersistenceManager pm = ...;
Transaction tx = pm.currentTransaction();
User user = userService.currentUser();
List<Account> accounts = new ArrayList<Account>();
try {
tx.begin();
Query query = pm.newQuery("select from Customer " +
"where user == userParam " +
"parameters User userParam");
List<Customer> customers = (List<Customer>)
query.execute(user);
query = pm.newQuery("select from Account " +
"where parent-pk == keyParam " +
"parameters Key keyParam");
for (Customer customer : customers) {
accounts.addAll((List<Account>)
query.execute(customer.key));
}
} finally {
if (tx.isActive()) {
tx.rollback();
}
}
的更多信息,請訪問: http://code.google.com/appengine/docs/java/datastore/transactions.html#Uses_For_Transactions
2
我掙扎這一段時間,但以下將工作!簡短的回答是,JDO與App Engine使用絕對可以支持祖先查詢,所以你不必訴諸底層API獨特到App Engine,特別是在你想和JDO堅持整個應用程序的情況。
第1步:
在子類中確保有下列實例變量。變量的實際名稱無關緊要。重要的是註釋。
@Persistent
@Extension(vendorName="datanucleus", key="gae.parent-pk", value="true")
private String mParentEncKey;
第2步:
當查詢子對象(S)由主密鑰,你想通過你創建的實例變量的名稱上parentKey到然後過濾...在這case這個例子用於如果你想查詢一組具有屬性的子對象,假設你知道父鍵和那個屬性。
public static List<ChildObject> queryYourChildObjects(String parentKey, String someProperty) {
PersistenceManager pm = PMF.get().getPersistenceManager();
Query q = pm.newQuery(ChildObject.class);
q.setFilter("mParentEncKey == parentKeyParam && property == propertyParam");
q.declareParameters("String parentKeyParam, String propertyParam");
List<ChildObject> results = (List<ChildObject>) q.execute(parentKey, someProperty);
return results;
}
就是這樣!希望有幫助。
+0
您還可以在這個相關答案用物化,因爲:http://stackoverflow.com/a/11365390/305689 – wescpy 2013-09-13 04:13:24
相關問題
- 1. 谷歌App Engine數據存儲/ NoSQL示例與祖先查詢
- 2. 谷歌App Engine的GQL查詢問題
- 3. PHPStorm與谷歌App Engine的
- 4. 谷歌App Engine的蟒蛇過濾器「的財產屬性」
- 5. 沒有祖先的Google App Engine HRD查詢
- 6. Python Google App引擎查詢內部事務沒有祖先?
- 7. App Engine數據存儲中的祖先
- 8. 數據存儲App Engine查詢祖先python
- 9. 的IntelliJ:入門與谷歌App Engine的
- 10. RestEasy的與谷歌App Engine的
- 11. 與谷歌App Engine和BigTable的
- 12. 異步獲取與谷歌App Engine的
- 13. 使用simpleSAMLphp與谷歌App Engine的
- 14. 如何通過祖先/父母Google App Engine查詢進行訂購?
- 15. 谷歌App Engine的編碼
- 16. 谷歌App Engine的問題
- 17. 谷歌App Engine的例子
- 18. 谷歌App Engine的JSP
- 19. 谷歌App Engine的NotSerializableException DatastoreServiceImpl
- 20. 谷歌App Engine的PDF轉換器
- 21. 的Java NoClassDefFoundError的與谷歌的App Engine專案參考
- 22. 谷歌的App Engine(Java)的Web服務認證/授權/安全
- 23. 谷歌App Engine任務隊列
- 24. 谷歌App Engine的NDB:找訂單查詢列表
- 25. 谷歌App Engine的大型查詢,顯示排名
- 26. 查詢奇怪的行爲。谷歌App Engine數據存儲
- 27. 谷歌App Engine的GQL查詢ORDER BY date_posted
- 28. 谷歌應用程序引擎祖先查詢
- 29. 如何通過Google App Engine中的ByteString字段查詢過濾?
- 30. 通過Google App Engine上的密鑰ID進行過濾查詢
您尚未在任何地方提交交易。 – Price 2015-10-27 19:34:47