2013-06-30 77 views
0

我在一個數據操作中遇到了,我想通過Ref字段排序查詢的結果。排序在Ref <?>屬性 - 物化查詢

可以說我有以下數據對象。

  1. EmployeeDO {龍ID,字符串名稱,參考文獻refCompany}

  2. CompanyDO {龍ID,字符串名稱}

現在我想查詢的公司名稱安排員工。

我試着查詢

Query<EmployeeDO> query = ofy().load().type(EmployeeDO.class).order("refCompany"); 

顯然,這並沒有排序有公司名稱的結果,但也成功編譯此。

請提出這樣的排序是否可以通過這種方式或可以嘗試其他解決方法嗎?

回答

0

如果您是@Index refCompany,您可以通過refCompany訂購,但它不會按公司名稱排序 - 它將通過關鍵字索引(如果您不使用@Parent,只是一個id訂單)。

有兩個 '平常' 的選擇:

  • 將數據加載到RAM和排序存在。這是一個RDBMS將在內部完成的工作。 GAE不支持連接並不完全正確;這只是你是查詢計劃者。

  • 非規範化並預先索引companyName。將@Index companyName放在EmployeeDO中。如果你的魔術排序表現不佳(比如說員工太多),那麼你可以用RDBMS來做這件事。

+0

謝謝!我以你建議的第二種方式做到了。它的工作原理是,每次更新公司名稱或員工更改她的公司時,我都必須更新「employeeDO中的非規範化前索引公司名稱」。我想知道是否有某種方法可以直接對ref屬性進行排序:名稱字段。這將是理想的。 – aadhaar