Java 如何定义锡耶纳和GAE中的一对多关系?
假设我有两个领域模型:作者和书。所以作者可以有一本或多本书 从锡耶纳的文档中,似乎可以看出:Java 如何定义锡耶纳和GAE中的一对多关系?,java,google-app-engine,siena,Java,Google App Engine,Siena,假设我有两个领域模型:作者和书。所以作者可以有一本或多本书 从锡耶纳的文档中,似乎可以看出: public class Author extends Model { @Id public Long id; public String name; public Book book; } 但我期待的是: public class Author extends Model { @Id public Long id;
public class Author extends Model {
@Id
public Long id;
public String name;
public Book book;
}
但我期待的是:
public class Author extends Model {
@Id
public Long id;
public String name;
public Book book;
}
公共类作者扩展模型{
@Id
public Long id;
public String name;
public List<Books> books = new ArrayList<Book>();
}
@Id
公共长id;
公共字符串名称;
public List books=new ArrayList();
}
因此,在我的代码中,我可以执行以下操作:
public class Author extends Model {
@Id
public Long id;
public String name;
public Book book;
}
bookbook1=新书(),boo2=新书()
作者=新作者();
作者。书籍。添加(第1册);
作者。书籍。添加(第2册);
author.insert()
但从文档中看,这似乎并不正确
问题是什么是正确的解决方案?请记住,Siena基于NoSQL概念,因此没有SQL中的连接。 无论如何,你可以自然地设计一个one2many关系 在传统的锡耶纳,您可以使用自动查询这样编写:
class Author {
...
@Filter("author")
public Query<Book> books; // this is called an "automatic-query"
...
}
class Book {
...
Author author;
...
}
它插入作者和与作者关联的书籍(但如果您删除作者,它将不会删除书籍,因为siena不管理此类级联并允许您这样做)
你可以先阅读这里的文档,然后询问锡耶纳谷歌集团的问题,如果可以,我们会帮助你
List<Book> theBooks = books.asList();
List<Book> theFilteredBooks = books.asQuery().filter("...", "...").fetch();
Author author = new Author("name");
author.books.add(new Book("title1"), new Book("title2"), new Book("title3"));
author.insert();