The Android Developer Challenge is back! Submit your idea before December 2.

Delete

@Target([AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER]) class Delete
androidx.room.Delete

Marks a method in a Dao annotated class as a delete method.

The implementation of the method will delete its parameters from the database.

All of the parameters of the Delete method must either be classes annotated with Entity or collections/array of it.

Example:

@Dao
  public interface MusicDao {
      @Delete
      public void deleteSongs(Song... songs);
 
      @Delete
      public void deleteAlbumAndSongs(Album album, List<Song> songs);
  }
  
If the target entity is specified via entity() then the parameters can be of arbitrary POJO types that will be interpreted as partial entities. For example:
@Entity
  public class Playlist {
    @PrimaryKey
    long playlistId;
    long ownerId;
    String name;
    @ColumnInfo(defaultValue = "normal")
    String category;
  }
 
  public class OwnerIdAndCategory {
    long ownerId;
    String category;
  }
 
  @Dao
  public interface PlaylistDao {
    @Delete(entity = Playlist.class)
    public void deleteByOwnerIdAndCategory(OwnerIdAndCategory... idCategory);
  }
  

Summary

Public constructors

<init>(entity: KClass<*>)

Marks a method in a Dao annotated class as a delete method.

Properties

KClass<*>

The target entity of the delete method.

Public constructors

<init>

Delete(entity: KClass<*>)

Marks a method in a Dao annotated class as a delete method.

The implementation of the method will delete its parameters from the database.

All of the parameters of the Delete method must either be classes annotated with Entity or collections/array of it.

Example:

@Dao
  public interface MusicDao {
      @Delete
      public void deleteSongs(Song... songs);
 
      @Delete
      public void deleteAlbumAndSongs(Album album, List<Song> songs);
  }
  
If the target entity is specified via entity() then the parameters can be of arbitrary POJO types that will be interpreted as partial entities. For example:
@Entity
  public class Playlist {
    @PrimaryKey
    long playlistId;
    long ownerId;
    String name;
    @ColumnInfo(defaultValue = "normal")
    String category;
  }
 
  public class OwnerIdAndCategory {
    long ownerId;
    String category;
  }
 
  @Dao
  public interface PlaylistDao {
    @Delete(entity = Playlist.class)
    public void deleteByOwnerIdAndCategory(OwnerIdAndCategory... idCategory);
  }
  

See Also

Properties

entity

val entity: KClass<*>

The target entity of the delete method.

When this is declared, the delete method parameters are interpreted as partial entities when the type of the parameter differs from the target. The POJO class that represents the entity must contain a subset of the fields of the target entity. The fields value will be used to find matching entities to delete.

By default the target entity is interpreted by the method parameters.

Return
KClass<*>: the target entity of the delete method or none if the method should use the parameter type entities.