我修改了谷歌应用引擎(java)附带的留言板示例,以使用某种“自我加入”包含父子关系。
现在我的greeting.java文件看起来像这样
package guestbook;
import java.util.Date;
import java.util.List;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.users.User;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Greeting {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private User author;
@Persistent
private String content;
@Persistent
private Date date;
@Persistent
private Greeting parent;
@Persistent(mappedBy="parent")
private List<Greeting> children;
public Greeting getParent() {
return parent;
}
public void setParent(Greeting parent) {
this.parent = parent;
}
public List<Greeting> getChildren() {
return children;
}
public void setChildren(List<Greeting> children) {
this.children = children;
}
public Greeting(User author, String content, Date date) {
this.author = author;
this.content = content;
this.date = date;
}
public Key getId() {
return id;
}
public User getAuthor() {
return author;
}
public String getContent() {
return content;
}
public Date getDate() {
return date;
}
public void setAuthor(User author) {
this.author = author;
}
public void setContent(String content) {
this.content = content;
}
public void setDate(Date date) {
this.date = date;
}
}
请注意添加了父字段和子字段,并将主键类型更改为com.google.appengine.api.datastore.Key(如http://code.google.com/appengine/docs/java/datastore/relationships.html#Owned_One_to_Many_Relationships所示)
现在它不会将数据保存到数据存储区。我不明白为什么。我已经尝试删除本地数据存储区和索引文件(如网上某处所说),但它无法正常工作。没有例外,没有。
有人可以查看并请帮助
答案 0 :(得分:0)
原来这是谷歌应用引擎中的一个已知问题
http://code.google.com/p/datanucleus-appengine/issues/detail?id=119
现在我需要更改我的数据模型以使用app引擎