【发布时间】:2015-11-13 20:20:57
【问题描述】:
我正在开发一个带有后端的应用程序,我决定尝试将 Google App Engine 用于我的后端。由于我是 Google App Engine 的新手,所以我对逻辑有点困惑。
基本上,我有几个模型类来表示我的对象类型。假设其中一个是用户,另一个是项目。用户拥有物品,并且一件物品可以属于多个用户。所以用户 X 可以有 25 个项目,包括项目 A,用户 Y 可以有完全不同的 20 个项目,还有项目 A。
现在我的 User 类看起来像这样:
@Entity
public class User {
@Id private Long id;
private String name;
private String emailAddress;
private String photoURL;
//All getters and setters...
}
我的 Item 类大致相同。我的一个问题是,我应该在哪里添加某种列表,例如将项目列表添加到用户中。我应该使用哪个注释?该注释将为我提供什么结果(引用、ID 或完整对象)?
与此相关的另一个问题是,在我的端点类中,如何获取特定用户拥有的项目列表(或拥有特定项目的用户列表)?
最后一个完全不相关的问题,我应该做些什么来使 id 自动递增,或者如果我在插入项目时不提供任何 id 会自动递增吗?
【问题讨论】:
-
这完全取决于您的用例以及您想要的方式。您可以嵌入对象或对其他对象进行引用:github.com/objectify/objectify/wiki/Entities#embedded-classes 并且关于 id 高几段:“@Id 字段的类型可以是
Long、long或String。如果您使用Long并使用nullid 保存一个实体,将使用该类型的标准GAE 分配器为您生成一个数值。如果您使用String或原始long类型,则永远不会自动生成值." Ids 可能不是增量的,我猜是随机分布的。 -
谢谢@zapl,我得到了关于@Id 的答案。关于嵌入式类,我认为这不是我的解决方案。我希望能够独立地从两个类中获取项目。我看到了像
Ref<User>这样的结构或像@Load或@Parent这样的注释,但我不确定这些是否是我正在寻找的。span> -
我快速查看了整篇文章(会仔细阅读)。因此,在这种情况下,我可以将
List<Key<Item>> items = new ArrayList<Key<Item>>();行添加到我的 User 类中。但是我将如何搜索拥有相同项目的用户?你能写一个答案吗?
标签: java android google-app-engine objectify