@Query
を使用してRoomデータベースの行を削除していますが、レコードを削除できません。これが@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
}
誰かが私にアドバイスをしてもらえますか、私が間違っていることは何ですか?
この方法で@Queryを使用してみてください。
@Query("DELETE FROM notes WHERE uid = :arg0")
int delete(final int noteId);
上記の行のコードでは、arg0が関数delete()に渡される最初の引数です。
@Deleteアノテーションを使用でき、Deleteメソッドのすべてのパラメーターは、Entityまたはそのコレクション/配列でアノテーションが付けられたクラスでなければなりません。
あなたの場合、@ Delete int delete(Note note)または
@Delete int delete(注...注)
次のような削除クエリを使用します。
@Query("Delete FROM Orders where quote_no LIKE :quote_no")
void deleteOrderById(String quote_no);
ここで、 "quote_no"は行を削除するデータベース内の一意の値で、 "Orders"はテーブル名です。