从GAE's documentation,我可以读到这个:
实体的类型是从类的简单名称派生的(内部类使用没有包名称的$ path)。
没有告诉我如何存储它,这个:
以下是嵌入类的示例。这个例子使嵌入式类成为使用它的数据类的内部类;这很有用,但不需要使类嵌入。
为什么有用?使课程“嵌入”的优势是什么?如果我不需要“嵌入”它,我该怎么办? 我很难理解最后的陈述。
假设我有这门课程:
@PersistenceCapable
public class ChatHistory {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private ArrayList<Message> messages;
// more fields and all the ChatHistory methods here
private class Message implements Comparable<Message>{ // <-- This one
public String timeStamp;
public String text;
// more fields and all the Message methods here
}
}
你会如何储存它?
答案 0 :(得分:2)
最明显的事情是将Message
变成一个静态类(尝试持久化非静态类的想法会让我头疼)并用@PersistenceCapable
注释它。那将导致它变成自己的表。您最好建议将其移动到自己的文件中(并将其更改为'package private')。
答案 1 :(得分:0)
Objectify - 在GAE 之上构建的方便的数据存储区接口 - 为这种情况定义@Embedded。如果你还没有寻找这种工具,那似乎是一个很好的机会。如果您这样做并优先使用低级API,我无法再帮助您了。