【发布时间】:2011-10-18 03:46:36
【问题描述】:
是否可以在 Google App Engine 中的对象之间建立多对多关系?
我是 GAE 的新手,仍在阅读它。编码似乎与我习惯的通常的 Java 编码完全不同。我已阅读入门留言本教程。那么,我可以从 GAE 用户那里获得任何帮助/教程/视频/知识吗??
谢谢你。
【问题讨论】:
标签: java google-app-engine many-to-many
是否可以在 Google App Engine 中的对象之间建立多对多关系?
我是 GAE 的新手,仍在阅读它。编码似乎与我习惯的通常的 Java 编码完全不同。我已阅读入门留言本教程。那么,我可以从 GAE 用户那里获得任何帮助/教程/视频/知识吗??
谢谢你。
【问题讨论】:
标签: java google-app-engine many-to-many
关于文档,这是一个很好的起点:
http://code.google.com/appengine/docs/java/overview.html
尊重来自http://code.google.com/appengine/docs/java/datastore/jdo/relationships.html的多对多关系:
我们可以通过维护集合来建模多对多关系 关系双方的关键。让我们将示例调整为 让 Food 跟踪将其视为最爱的人:
Person.java
import java.util.Set;
import com.google.appengine.api.datastore.Key;
// ...
@Persistent
private Set<Key> favoriteFoods;
Food.java
import java.util.Set;
import com.google.appengine.api.datastore.Key;
// ...
@Persistent
private Set<Key> foodFans;
在这个例子中,Person 维护了一组 Key 值 唯一标识最喜欢的 Food 对象,以及 Food 维护一组唯一标识 Person 的 Key 值 认为它是最喜欢的对象。建模多对多时 使用键值,请注意这是应用程序的责任 维持双方的关系:
相册.java
// ...
public void addFavoriteFood(Food food) {
favoriteFoods.add(food.getKey());
food.getFoodFans().add(getKey());
}
public void removeFavoriteFood(Food food) {
favoriteFoods.remove(food.getKey());
food.getFoodFans().remove(getKey());
}
【讨论】: