我在探索appengine(java),並根據主題,我如何使用DatastoreService獲取基於密鑰和條件的實體?Appengine java獲取基於密鑰和條件的實體
我的方案,培訓師有許多與用戶的一對多的關係,所以我有我的結構,所以
Trainer(id, name, type, department)
User(id, name, address, is_activated)
TrainerUser(id, trainer_id, user_id)
我們得到一個特定的教練下的所有用戶,我獲取所有從TrainerUser的USER_ID按trainer_id過濾。一切都好。然後,我想教練在所有激活用戶,所以我的計劃是在循環遍歷獲取USER_ID的,並呼籲像
Query q = new Entity('User');
q.addFilter('Key', EQUAL, userId);
q.addFilter('is_activated', EQUAL, True);
但據我所知,關鍵是不是一個真正的物理特性在其中可以使用addFilter()來訪問,所以頂部的代碼只會返回一個空實體。
有沒有辦法在實體中引用Key?任何魔術關鍵字?
這適用於一對多關係,但在我的情況下,由於培訓師和用戶處於多對多關係,trainer_key不在用戶表中。 – 2010-10-04 03:15:26
因爲你會經常做這個查詢,所以我建議在用戶上添加教練鍵到db.ListProperty(type = db.Key)。這將用戶所擁有的培訓者人數限制在最大值(500或1000),這應該足夠了。 培訓師可能會擁有比用戶擁有培訓師更多的用戶。因此,該列表位於用戶模型上,而不是Trainer上。 – mahmoud 2010-10-06 16:11:59