App Engine多对多关系JAVA

时间:2012-05-12 16:49:47

标签: java google-app-engine datastore relationships

我一直在撞墙,试图正确配置多对多的关系,这应该是直截了当的。

我有一个购物清单类和一个商品类。我只是希望购物清单能够保存物品清单。

请不要回复Google App引擎文档链接,我正在寻找一个有人在他们自己的项目中使用的工作示例,而不是谷歌松散的理论。

2 个答案:

答案 0 :(得分:0)

您不能像在mongodb中一样在父项目中“保留”项目。

但您可以从购物清单类

中引用您的商品类

从您的商品类中获取ID并将其添加到购物清单类中。它看起来像:

db.ListProperty(db.Key)

我知道你不想要gae文档,但他们有一个建模关系页面here

答案 1 :(得分:0)

这很容易。

创建一个包含多对多关系的类。在你的情况下:

class ShoppingListItems(){

  @Id
  private String id;
  private Long shoppingListId;
  private Long itemId;

  public ShoppingListItems(Long shoppingListId, Long itemId) {
    this.id = shoppingListId.toString() + "-" + itemId.toString();
    this.shoppingListId = shoppingListId;
    this.itemId = itemId;
  }

  public String getId() {
    return id;
  }

  public static void addItemToList(Long shoppingListId, Long itemId, DAO dao) {
        // add shopping list and itemsr IDs to the ShoppingListItems 'join' table
        ShoppingListItems record = new ShoppingListItems(shoppingListId, itemId);
        dao.ofy().put(record);   
  }

这里@Id和dao.ofy()。put(记录)来自Objectify术语,但您可以根据自己的喜好使用JPA或JDO。