我使用@Query
删除我的会议室数据库中的行,但我无法删除该记录。以下是@Dao
@Dao
public interface NoteDao {
@Insert
void insert(final Note note);
@Update
void update(final Note note);
@Query("DELETE FROM notes WHERE uid = :noteId")
int delete(final int noteId);
@Query("SELECT * FROM notes")
LiveData<List<Note>> selectAll();
}
实体类
@Entity(tableName = "notes")
public class Note {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
@Expose(serialize = false, deserialize = false)
private int mId;
@ColumnInfo(name = "uid")
@SerializedName("id")
private int mUid;
@ColumnInfo(name = "text")
@SerializedName("text")
private String mText;
public Note() {
}
getters and setters ommited
}
有人可以给我一个建议吗,我做错了什么?
答案 0 :(得分:1)
您可以使用@Delete注释,Delete方法的所有参数必须是使用Entity或其集合/数组注释的类。
在你的情况下,我相信,你应该使用 @删除 int delete(注释)或
@Delete int delete(注意...注释)
答案 1 :(得分:1)
尝试以这种方式使用@Query。
@Query("DELETE FROM notes WHERE uid = :arg0")
int delete(final int noteId);
在上面的代码行中,arg0是传递给函数delete()的第一个参数。
答案 2 :(得分:0)
使用这样的删除查询:
@Query("Delete FROM Orders where quote_no LIKE :quote_no")
void deleteOrderById(String quote_no);
其中&#34; quote_no&#34;是数据库中要删除行的唯一值,&#34;订单&#34;是表名。
答案 3 :(得分:0)
对于我来说,我添加了错误的删除注释@DELETE,该注释是从改造中导入的,而不是从房间库中导入的@Delete。