Tôi hiện đang sử dụng ActiveAndroid và đã cố gắng có mối quan hệ nhiều người để làm việc trong vài giờ qua, tuy nhiên tôi không thể làm việc đó. Tôi hy vọng bạn có thể giúp tôi:ActiveAndroid Mối quan hệ nhiều-nhiều
Tôi có mô hình “Sinh viên” và “Khóa học”, sinh viên có thể có nhiều khóa học và khóa học có nhiều sinh viên. Về cơ bản đây là những gì tôi có trong mô hình “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");
}
Ngay bây giờ những gì tôi đang cố gắng để làm là nhận được “tất cả học sinh trong khóa học X”, với đoạn mã sau:
((Student) new Select().from(StudentCourse.class).where("course = ?",selectedCourse.getId()).executeSingle()).students();
Tuy nhiên tôi nhận được lỗi sau:
java.lang.ClassCastException: com.papinotas.models.StudentCourse không thể được đúc để com.papinotas.models.Student
Nếu tôi thay đổi o cast f (Học sinh) đến (StudentCourse) Tôi nhận được lỗi sau:
android.database.sqlite.SQLiteException: không có cột đó: student.StudentCourse (mã 1):, trong khi biên dịch: CHỌN * TỪ học sinh WHERE students.StudentCourse = 1
Mục tiêu chính của tôi là hy vọng đạt được điều này chỉ trong 1 truy vấn. Mọi sự trợ giúp sẽ rất được trân trọng. Cảm ơn trước!
PS: Tôi đã nhìn khá nhiều tất cả mọi thứ tôi có thể tìm thấy: Active Android many-to-many relationship và https://github.com/pardom/ActiveAndroid/issues/46
Tôi đã cố gắng tìm một cách để có được tất cả các sinh viên với một truy vấn duy nhất; điều này sẽ làm N truy vấn nếu tôi không nhầm PS: Tôi hiểu điểm của bạn là gì, và tôi đồng ý nó không có ý nghĩa gì cả, tôi đã cố gắng làm theo ví dụ trên các liên kết tôi đã đăng ở trên, tuy nhiên họ đã không làm như vậy ' Tôi làm việc như tôi mong đợi. – Waclock
Đây là một truy vấn SELECT duy nhất, nhưng sau đó nó thực hiện một số thao tác trong danh sách để bạn có được danh sách các sinh viên thay vì danh sách StudentCourses. –
Ồ, "enrolment.student" không tạo ra một truy vấn tới cơ sở dữ liệu, vậy thì bạn nói đúng! – Waclock