java - 自加入谷歌应用程序引擎(java)

标签 java google-app-engine jdo

我修改了 Google 应用引擎 (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 中所示)

现在它不会将数据保存到数据存储中。我不明白为什么。我尝试删除本地数据存储和索引文件(如网络上某处所述),但它不起作用。没有异常(exception),没有。

有人可以调查一下并请帮忙

最佳答案

事实证明这是 Google App Engine 中的一个已知问题

http://code.google.com/p/datanucleus-appengine/issues/detail?id=119

现在我需要更改数据模型才能与 App Engine 配合使用

关于java - 自加入谷歌应用程序引擎(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1363959/

相关文章:

java - 如何连接到 Google App Engine 上的远程 RDBMS

google-app-engine - 使用 Google AppEngine 命名空间但能够访问所有租户数据

mysql - Datanucleus JDO + MySQL 创建长文本列

java - 盒装原语和等价物

java - 创建用户后如何使用 Play Framework 安全模块登录用户

JavaFX bean 与属性——为什么两者都有?

java - 编写代理服务器

java - GAE+JDO : Deleting Child object cause issue in google app engine java

java - GAE 的身份验证策略

java - 如果您在开发模式下运行 GAE 项目,实体会保存在哪里?