J'utilise @Query
pour supprimer une ligne dans ma base de données de salle, mais je ne peux pas supprimer l'enregistrement. Voici ma requête de @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();
}
Classe d'entité
@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
}
Quelqu'un peut-il me donner un conseil, ce que je fais mal?
Vous pouvez utiliser l'annotation @Delete et tous les paramètres de la méthode Delete doivent être des classes annotées avec Entity ou des collections/tableaux de celle-ci.
Dans votre cas, je pense que vous devriez utiliser @ Deleteint delete (Note note) ou
@Delete Int delete (Note ... note)
Utilisez la requête de suppression comme ceci:
@Query("Delete FROM Orders where quote_no LIKE :quote_no")
void deleteOrderById(String quote_no);
où "quote_no" est la valeur unique de la base de données avec laquelle vous voulez supprimer la ligne et "Orders" le nom de la table.
Essayez d’utiliser @Query de cette façon.
@Query("DELETE FROM notes WHERE uid = :arg0")
int delete(final int noteId);
Dans le code de lignes ci-dessus, arg0 est le premier argument transmis à la fonction delete ().