[英]How to write delete room tables in database with list<collections>?
我需要一键删除子程序列表。 但是当我在dao中写的时候
@Delete(entity = Subroutines.class)
void deleteSubroutineList(List<Subroutines> subroutine);
我在尝试为 AsychTask 设置存储库时不断遇到错误
public void deleteSubroutineList(List<Subroutines> subroutines) {
new DeleteSubroutineListAsyncTask(habitWithSubroutinesDao).execute(subroutines);
}
public static class DeleteSubroutineListAsyncTask extends AsyncTask<List<Subroutines>, Void, Void> {
private final HabitWithSubroutinesDao habitWithSubroutinesDao;
public DeleteSubroutineListAsyncTask(HabitWithSubroutinesDao habitWithSubroutinesDao) {
this.habitWithSubroutinesDao = habitWithSubroutinesDao;
}
@Override
protected Void doInBackground(List<Subroutines>... lists) {
habitWithSubroutinesDao.deleteSubroutineList(lists);
return null;
}
}
所需类型:列表,
提供: List<Subroutines>[]
但是当我将 dao 上的所需类型更新为
@Delete(entity = Subroutines.class)
void deleteSubroutineList(List<Subroutines>[] subroutine);
我在编译时出错:指向 dao
error: The partial entity java.util.List<E> does not have any columns that can be used to perform the query.
void deleteSubroutineList(List<Subroutines>[] subroutine);
子程序实体 Class:
@Entity(foreignKeys = @ForeignKey(
entity = Habits.class,
parentColumns = "pk_habit_uid",
childColumns = "fk_habit_uid",
onDelete = ForeignKey.CASCADE,
onUpdate = ForeignKey.CASCADE
))
public class Subroutines implements Serializable {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "pk_subroutine_uid")
private long pk_subroutine_uid;
@ColumnInfo(name = "fk_habit_uid", index = true)
private long fk_habit_uid;
@ColumnInfo(name = "routine")
private String subroutine;
@ColumnInfo(name = "description")
private String description;
@ColumnInfo(name = "color")
private String color;
@ColumnInfo(name = "isModifiable")
private Boolean isModifiable;
@ColumnInfo(name = "isMarkedDone")
private boolean is_marked_done;
@ColumnInfo(name = "streak")
private int streak;
@ColumnInfo(name = "total_streak")
private int total_streak;
@ColumnInfo(name = "skips")
private int skips;
*不包括 getter 和 setter、构造函数、toString 导致太长
我应该怎么做才能使这项工作?
我相信你可以利用:-
@Delete(entity = Subroutines.class)
void deleteSubroutineList(List<Subroutines> subroutine);
和这个结合:-
@Override
protected Void doInBackground(List<Subroutines>... lists) {
for(List<Subroutines> ls: lists)
habitWithSubroutinesDao.deleteSubroutineList(ls);
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.