我目前正在使用 ActiveAndroid,并且在过去的几个小时里一直在尝试建立多对多的关系,但我就是无法让它发挥作用。我希望你能帮助我:
我有模型“学生”和“课程”,一个学生可以有很多课程,一个课程有很多学生。基本上这就是我在“StudentCourse”模型中的内容:
@Column(name = COURSE)
public Course course;
@Column(name = STUDENT)
public Student student;
public StudentCourse(Student student, Course course) {
super();
this.student = student;
this.course = course;
}
//
public StudentCourse(){ }
public List<Course> courses(){
return getMany(Course.class, "StudentCourse");
}
public List<Student> students(){
return getMany(Student.class, "StudentCourse");
}
现在我要做的是获取“课程 X 中的所有学生”,使用以下代码:
((Student) new Select().from(StudentCourse.class).where("course = ?",selectedCourse.getId()).executeSingle()).students();
但是我收到以下错误:
java.lang.ClassCastException:com.papinotas.models.StudentCourse 无法转换为 com.papinotas.models.Student
如果我将 (Student) 的演员表更改为 (StudentCourse),我会收到以下错误:
android.database.sqlite.SQLiteException:没有这样的列:students.StudentCourse(代码1):,编译时:SELECT * FROM students WHERE students.StudentCourse=1
我的主要目标是希望在 1 个查询中实现这一目标。任何帮助将不胜感激。提前致谢!
PS:我已经看过几乎所有我能找到的东西:Active Android 多对多关系和https://github.com/pardom/ActiveAndroid/issues/46