Typiquement pour un très grand nombre, vous feriez un deux 1-manys. Et des app engine docs on relationships:
De nombreux à-plusieurs Nous pouvons modéliser plusieurs-à-plusieurs en maintenant des collections de clés des deux côtés de la relation. Nous allons ajuster notre exemple pour laisser des aliments garder une trace des personnes qui le considèrent comme un favori:
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;
Dans cet exemple, la personne maintient un ensemble de valeurs clés qui identifient les objets alimentaires qui sont les favoris, et l'aliment conserve un ensemble de valeurs clés qui identifient de manière unique les objets Personne qui le considèrent comme un favori. Lors de la modélisation d'un grand nombre à plusieurs en utilisant des valeurs clés, sachez qu'il est de la responsabilité de l'application de maintenir les deux côtés de la relation: Album.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());
}
Notez que si une instance de la personne et une instance de Food contenue dans Person.favoriteFoods appartient au même groupe d'entités, il n'est pas possible de mettre à jour la personne et son aliment favori en une seule transaction. S'il n'est pas possible de co-localiser les objets dans le même groupe d'entités, l'application doit tenir compte de la possibilité que les aliments favoris d'une personne soient mis à jour sans la mise à jour correspondante des ventilateurs ou, inversement, sera mis à jour sans la mise à jour correspondante à l'ensemble des aliments préférés du ventilateur.