在Android Room中处理一对多关系
我是Android Room持久性库的新手。我试图设计一个学校和学生班级 学校可以有一份学生名单/一组学生。有一些问题我想支持 获取给定学校id的学生列表 为给定的学生id更新学生 删除给定学生id的学生 学校班级:在Android Room中处理一对多关系,android,android-room,Android,Android Room,我是Android Room持久性库的新手。我试图设计一个学校和学生班级 学校可以有一份学生名单/一组学生。有一些问题我想支持 获取给定学校id的学生列表 为给定的学生id更新学生 删除给定学生id的学生 学校班级: @Entity public class School { @PrimaryKey @ColumnInfo(name = "school_id") public String schoolId; @ColumnInfo(name = "school
@Entity
public class School {
@PrimaryKey
@ColumnInfo(name = "school_id")
public String schoolId;
@ColumnInfo(name = "school_name")
public String schoolName;
}
学生班级:
@Entity(foreignKeys = @ForeignKey(entity = School.class,
parentColumns = "school_id",
childColumns = "school_id",
onDelete = ForeignKey.CASCADE,
onUpdate = ForeignKey.CASCADE))
public class Student {
@PrimaryKey
@ColumnInfo(name = "student_id")
public String studentId;
@ColumnInfo(name = "student_name")
public String studentName;
@ColumnInfo(name = "school_id")
public String schoolId;
}
我试图理解我的Dao层应该如何编写。这是我的尝试
学生道:
@Dao
public interface StudentDao {
@Query(SELECT * FROM Student WHERE school_id = :schoolId)
List<Student> getSudents(String schoolId);
@Query("DELETE FROM Student WHERE student_id = :studentId")
void deleteStudent(String studentId);
@Query("UPDATE Student SET student_name = :newName WHERE student_id = :studentId")
void updateStudent(String studentId, String newName);
}
这种使用Student Dao的方式正确吗?还是我应该使用@Relations来支持1:N关系?Mayben您以前读过它,但这里有一篇很好的文章解释房间关系:是的,我以前读过这篇文章。但我试图了解使用外键和关系之间的最佳实践。本文还简要介绍了Dao类。这就是我的问题所在。如果我使用Dao类的方式足够好,或者有更好的方式来实现它。您好。这里有一篇文章显示了不同的关系:。这里还有另一个,使用@relationannotation。