Register now for Android Dev Summit 2019!

Update

class Update
androidx.room.Update

Marks a method in a Dao annotated class as an update method.

The implementation of the method will update its parameters in the database if they already exists (checked by primary keys). If they don't already exists, this option will not change the database.

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

Example:

@Dao
  public interface MusicDao {
      @Update
      public void updateSong(Song);
 
      @Update
      public int updateSongs(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(autoGenerate = true)
    long playlistId;
    String name;
    @ColumnInfo(defaultValue = "")
    String description
    @ColumnInfo(defaultValue = "normal")
    String category;
    @ColumnInfo(defaultValue = "CURRENT_TIMESTAMP")
    String createdTime;
    @ColumnInfo(defaultValue = "CURRENT_TIMESTAMP")
    String lastModifiedTime;
  }
 
  public class PlaylistCategory {
    long playlistId;
    String category;
    String lastModifiedTime
  }
 
  @Dao
  public interface PlaylistDao {
    @Update(entity = Playlist.class)
    public void updateCategory(PlaylistCategory... category);
  }
  

Summary

Public constructors

<init>(entity: KClass<*>, onConflict: Int)

Marks a method in a Dao annotated class as an update method.

Properties

KClass<*>

The target entity of the update method.

Int

What to do if a conflict happens.

Public constructors

<init>

Update(entity: KClass<*>, onConflict: Int)

Marks a method in a Dao annotated class as an update method.

The implementation of the method will update its parameters in the database if they already exists (checked by primary keys). If they don't already exists, this option will not change the database.

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

Example:

@Dao
  public interface MusicDao {
      @Update
      public void updateSong(Song);
 
      @Update
      public int updateSongs(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(autoGenerate = true)
    long playlistId;
    String name;
    @ColumnInfo(defaultValue = "")
    String description
    @ColumnInfo(defaultValue = "normal")
    String category;
    @ColumnInfo(defaultValue = "CURRENT_TIMESTAMP")
    String createdTime;
    @ColumnInfo(defaultValue = "CURRENT_TIMESTAMP")
    String lastModifiedTime;
  }
 
  public class PlaylistCategory {
    long playlistId;
    String category;
    String lastModifiedTime
  }
 
  @Dao
  public interface PlaylistDao {
    @Update(entity = Playlist.class)
    public void updateCategory(PlaylistCategory... category);
  }
  

See Also

Properties

entity

val entity: KClass<*>

The target entity of the update method.

When this is declared, the update 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 along with its primary keys.

Only the columns represented by the partial entity fields will be updated if an entity with equal primary key is found.

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

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

onConflict

val onConflict: Int

What to do if a conflict happens.

Use OnConflictStrategy#ABORT (default) to roll back the transaction on conflict. Use OnConflictStrategy#REPLACE to replace the existing rows with the new rows. Use OnConflictStrategy#IGNORE to keep the existing rows.

Return
Int: How to handle conflicts. Defaults to OnConflictStrategy#ABORT.