我在一个应用程序中有5种类型的对象,比如A、B、C、D、E
该应用程序列出了所有类型的对象,其中显示了它们的名称、创建的用户和其他信息。
现在,为了能够在每个对象清单中显示用户名,我有一些选项
1)将用户实体键存储在每个对象中,然后当我检索类型A的对象的列表时,还检索用户的键及其名称,然后将它们附加到类型A的对象
2)当创建任何类型的对象时,还要存储一个属性" name“,它将是创建该对象的用户的名称(Yikes IMHO,如果用户后来更改了自己的名称怎么办;)
但我不相信上述两种方式都是正确的!我正在寻找答案,从可能遇到过类似问题的人那里
发布于 2011-12-12 10:33:53
实际上您已经回答了,选项2是不可取的,因为用户可以更改他/她的用户名,并且在DataStore中级联更改(手动)不是一个好的选择。
发布于 2011-12-12 15:06:59
http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#ReferenceProperty
链接中的示例:
class Author(db.Model):
name = db.StringProperty()
class Story(db.Model):
author = db.ReferenceProperty(Author)
story = db.get(story_key)
author_name = story.author.name
author = db.get(author_key)
stories_by_author = author.story_set.get()使用ReferenceProperty可以很容易地完成option1。如果性能不是您主要关心的问题,则不需要额外的代码。
我还没有在Google App Engine上使用过java,但是google app engine也支持你所需要的对象关系。
http://code.google.com/appengine/docs/java/datastore/jdo/relationships.html#Owned_One_to_One_Relationships
https://stackoverflow.com/questions/8469243
复制相似问题