在AppEngine中,我需要一个entity Diagram
,其中包含id
,title
和inner class Box
元素的变量列表,每个元素都包含id
和description
。
请在下面找到定义。但是,在定义EntityProxy List getter和setter时:"The type java.util.List<Box> cannot be used here"
。
DIAGRAM.java
@Entity
public class Diagram extends DatastoreObject {
public class Box {
private String boxId;
private String description;
public String get_id() {
return boxId;
}
public void set_id(String boxId) {
this.boxId = boxId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Indexed private String diagramId; // Primary key
@Indexed private String title;
@Embedded private List<Box> boxes;
public String get_id() {
return diagramId;
}
public void set_id(String diagramId) {
this.diagramId = diagramId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public void setBoxes(List<Box> boxes) {
this.boxes = boxes
}
public List<Box> getBoxes() {
return boxes;
}
}
DIAGRAMPROXY.java
[...]
List<Box> getBoxes();
void setBoxes(List<Box> boxes);
[...]
答案 0 :(得分:3)
你的内心班必须是static
。非静态内部类具有到外部类的实例的隐式链接,从加载和保存实体到数据存储区的角度来看,这实际上会让人感到困惑。
答案 1 :(得分:1)
令人困惑的是,Box类中有Collection<Box>
?听起来不对..无论如何,内部Box类必须是市场static
或移动到不同的文件。在Box类上使用@Embed
(版本4.0)注释。
此外,假设DatastoreObject
是您所有实体的基础,您可以将DatastoreObject
设为@Entity
,将其所有子类设为@EntitySubClass (index = true)
。显然,所有子实体都将保存在数据存储区中相同的“种类”(DatastoreObject)下。