您链接到的链接向您展示了多对多的 pojo 方式,但是使用 pojo 方法,如果您的列表中有太多,您可能会得到 OutOfMemoryExceptions,这就是我们还为您提供光标的原因。让我们将您给我的链接示例更改为以下内容....
public class Student {
@NoSqlId
private String id;
private String firstName;
private String lastName;
@ManyToMany
private List<Course> courses = new ArrayList(); //constructing avoids nullpointers
}
public class Course {
@NoSqlId
private String id;
private String name;
private String description
@ManyToOne
private Lecturer lecturer;
@ManyToMany
private List<Student> students = new List<Student>();
}
对于任何 *ToMany(OneToMany, ManyToMany) 我们将外键列表存储在行本身中。在上面的示例中,只有两个表。一行看起来像这样
studentrowkey -> firstName="dean", lastName="hiller", courses:courseFk56=null, courses:courseFk78=null, courses:courseFk98=null, etc. etc.
请注意,我们没有这种方式
studentrowkey -> firstName="dean", lastName="hiller", courses=courseFk56,courseFk78, courseFk98
我们使用前者的原因是列操作是独立的,因此如果两台服务器读取同一个学生......一台服务器可能会添加 courseFk200 而另一台服务器可能会从学生中删除 courseFk56,并且您的两个操作都会生效。如果您遵循后一种方法,则服务器的更改之一将丢失。
后来,迪恩