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