在Android Room中处理一对多关系

在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

我是Android Room持久性库的新手。我试图设计一个学校和学生班级

学校可以有一份学生名单/一组学生。有一些问题我想支持

获取给定学校id的学生列表 为给定的学生id更新学生 删除给定学生id的学生 学校班级:

@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。