Ref.get返回null

时间:2016-11-26 10:10:11

标签: java google-app-engine google-cloud-datastore objectify

我正在为我的下一个项目学习带有数据存储区的谷歌应用引擎。我为此制作了一个示例应用程序。

以下是实体的代码:

@Entity
public class Quote {
    @Id
    private Long id;
    @Parent @Load
    private Ref<Author> author;

    public Quote() {
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Author getAuther() {
        return author.get();
    }

    public void setAuther(Author author) {
        this.author = Ref.create(author);
    }
}

@Entity
public class Author {
    @Id
    private Long id;
    String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

我正在使用此API插入引用

 @ApiMethod(
            name = "insert",
            path = "quote",
            httpMethod = ApiMethod.HttpMethod.POST)
    public Quote insert(Quote quote) {
        ofy().save().entity(quote).now();
        return ofy().load().entity(quote).now();
    }

当我尝试插入新引号时,我将author.get()设为null。我很长时间陷入这个问题,我无法继续学习。

感谢。

1 个答案:

答案 0 :(得分:0)

插入Quote之前我没有插入Auther。您可以在实体模型中隐藏它,也可以在API调用中单独执行。