我正在使用Room Library开发一个Android应用。
该应用程序具有3个实体,例如任务,项目和子项目。
一个任务有一个或多个项目,一个项目有一个或多个子项目。
我需要使用其子查询任务。目前,我查询任务,然后查询项目,然后查询子项目,但我想使其更加高效。
我已经阅读了https://developer.android.com/reference/android/arch/persistence/room/Relation,但是我不知道如何编写这种关系。
答案 0 :(得分:0)
Android Room是SQLite的非常简洁的包装器。我确定你已经知道了。 我在这里假设您熟悉SQL和join语句。 如果没有读here。 我之所以这么说,是因为您实际上可以在DAO中编写任何内容,并且可以执行许多SQL查询。
对于您的情况,您需要为Task,Item和SubItem定义@Enitity。 然后,您需要定义它们之间的关系,即什么是Item中Task的外键和SubItem中Item的外键。
示例: 我是从内存中编写的,没有进行编译,因此我可能会犯一些错误,但是应该可以使用。
def successful_function
`source /usr/local/share/chruby/chruby.sh && chruby`
end
successful_function
您可以对subItem执行相同的操作。 现在是DAO。
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.ForeignKey;
import android.arch.persistence.room.PrimaryKey;
import static android.arch.persistence.room.ForeignKey.CASCADE;
@Entity(foreignKeys = @ForeignKey(entity = Task.class,
parentColumns = "id",
childColumns = "taskId",
onDelete = CASCADE))
public class Item {
@PrimaryKey public final int id;
public final int taskId;
public Item(final int id, final int userId) {
this.id = id;
this.userId = userId;
}
}