0
我正在尝试重构一些数据模型,但遇到了一个我不明白的问题。使用ObjectifyService.register时出现AssertionError
我原本由3个实体类的简单的数据模型,它看起来是这样的:
@Entity
public final class Teacher {
@Id
private Long id;
private String primarySubject;
public Teacher() {}
public Teacher(String primarySubject) {
this.primarySubject = primarySubject;
}
//getters & setters
}
@Entity
public final class Student {
@Id
private String username;
@Load
@Index
private Ref<Teacher> homeRoomTeacher;
public Student() {}
public Student(String username, Teacher teacher) {
this.username = username;
homeRoomTeacher = Ref.create(teacher);
}
//getters & setters
}
@Entity
public final class School {
@Id
private String name;
@Load
private Set<Ref<Teacher>> teachers;
@Load
private Set<Ref<Student>> students;
public School() {}
public School(String name) {
this.name = name;
}
//getters & setters
}
而这一切工作的罚款。
但我们决定,这将是更有益的事情嵌入的实体,而不是直接的参考文献......
@Entity
@Embed
public final class Teacher {
@Id
private Long id;
private String primarySubject;
public Teacher() {}
public Teacher(String primarySubject) {
this.primarySubject = primarySubject;
}
//getters & setters
}
@Entity
@Embed
public final class Student {
@Id
private String username;
@Index
private Ref<Teacher> homeRoomTeacher;
public Student() {}
public Student(String username, Teacher teacher) {
this.username = username;
homeRoomTeacher = Ref.create(teacher);
}
//getters & setters
}
@Entity
public final class School {
@Id
private String name;
private Set<Teacher> teachers;
private Set<Student> students;
public School() {}
public School(String name) {
this.name = name;
}
//getters & setters
}
做出这些改变,那么我们所有的JUnit测试后开始失败,一个AssertionError在我们的测试设置方法,其看起来像学校类的注册期间:
@Before
public void setUp() throws Exception {
helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());
helper.setUp();
ObjectifyService.register(Teacher.class);
ObjectifyService.register(Student.class);
ObjectifyService.register(School.class);
// more setup
}
的AssertionError的不出现,直到注册学校类的线,并根据所述堆栈跟踪正在从方法抛出“ com.googlecode.objectify.impl.translate.CreateContext.enterCollection“,但我不确定如何去修复它。
有没有人有任何想法?
感谢您的建议,实际上我在周末做出了很大的改变,但在注册学校课程时我仍然得到同样的错误。顺便说一下,我会注意到,使用我的初始设置,错误不会发生在学生或教师课程的注册上(如果@Embed注释有问题,您会期望),但仅限于学校类。 – klactose