我在探索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