gpt4 book ai didi

google-app-engine - 按键查询数据存储时得到空值

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:22 25 4
gpt4 key购买 nike

我有两个模型,Book 和 Chapter,是一对多的关系。我手动为 Book 和 Chapter 创建 key 。为了持久化,我创建了一个书籍对象,然后向其添加一个章节实例,然后持久化书籍。这工作正常,正如我在数据存储区中看到的那样。现在,当我尝试按键从数据存储中获取章节时,我得到了一个空对象。

这是 key 在数据存储中的样子:

Under Book: name/id = 123    chapters = [Book(123)/Chapter("abc")]
Under Chapter: name/id = abc

我创建了我的 key ,用于创建和获取对象,使用

Key key = KeyFactory.createKey(Chapter.class.getSimpleName(), chapterId);

我的抓取代码是这样的:

Key key = KeyFactory.createKey(Chapter.class.getSimpleName(), chapterId);
Chapter chp = mgr.find(Chapter.class, key);//chp is always null (yes in debug mode as well)

更新:

我在 Book 上尝试了同样的操作,效果很好。所以问题出在章节。可能是因为我通过 Book 保存了 Chapter(但我在上面提到的数据存储区中看到了两者)。

所以问题是:有没有办法独立检索章节(通过其键),如果是,请提供代码片段。

更新源代码:

@Entity
public class Book implements java.io.Serializable{
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Chapter> Chapters = new ArrayList<Chapter>();

public List<Chapter> getChapters() {
return Chapters;
}

public void setChapters(List<Chapter> Chapters) {
this.Chapters = Chapters;
}

public Book(long num, List<Chapter> Chapters) {
super();
Key key = KeyFactory.createKey(Book.class.getSimpleName(), num);
this.key = key;
this.Chapters = Chapters;
}

public Book(long num) {
super();
Key key = KeyFactory.createKey(Book.class.getSimpleName(), num);
this.key = key;
}

public Book() {
}

public Key getKey() {
return key;
}

public void setKey(Key key) {
this.key = key;
}

}



@Entity
public class Chapter implements java.io.Serializable{
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;

private String content;

public Chapter(String ChapterId, String content) {
super();
Key key = KeyFactory.createKey(Chapter.class.getSimpleName(), ChapterId);
this.key = key;
this.content = content;

}


public Key getKey() {
return key;
}

public void setKey(Key key) {
this.key = key;
}

public String getContent() {
return content;
}

public void set content(String content) {
this.content = content;
}


}

添加代码:

Book bk = new Book(num);
Chapter chp = new Chapter(ChapterId, content);
bk.getChapters().add(chp);
bookDao.put(bk);

mgr.persist(bk);

最佳答案

我没有留下任何投票,但你应该提供更多的周边代码。在您提供的代码中,大部分情况看起来都很好,但是如果您在交易中创建了书籍/章节(未显示),该章节可能会将书籍指定为父书,而您在手动时没有指定父书创建章节 key 。

关于google-app-engine - 按键查询数据存储时得到空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15850386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com