Entity

class Entity
androidx.room.Entity

Marks a class as an entity. This class will have a mapping SQLite table in the database.

Each entity must have at least 1 field annotated with PrimaryKey. You can also use #primaryKeys() attribute to define the primary key.

Each entity must either have a no-arg constructor or a constructor whose parameters match fields (based on type and name). Constructor does not have to receive all fields as parameters but if a field is not passed into the constructor, it should either be public or have a public setter. If a matching constructor is available, Room will always use it. If you don't want it to use a constructor, you can annotate it with Ignore.

When a class is marked as an Entity, all of its fields are persisted. If you would like to exclude some of its fields, you can mark them with Ignore.

If a field is transient, it is automatically ignored unless it is annotated with ColumnInfo, Embedded or Relation.

Example:

 @Entity public class User { @PrimaryKey private final int uid; private String name; @ColumnInfo(name = "last_name") private String lastName; public User(int uid) { this.uid = uid; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } 

Summary

Public constructors
<init>(tableName: String, indices: Array<Index>, inheritSuperIndices: Boolean, primaryKeys: Array<String>, foreignKeys: Array<ForeignKey>)

Marks a class as an entity.

Properties
Array<ForeignKey>

List of ForeignKey constraints on this entity.

Boolean

If set to true, any Index defined in parent classes of this class will be carried over to the current Entity.

Array<Index>

List of indices on the table.

String

The table name in the SQLite database.

Array<String>

The list of Primary Key column names.

Public constructors

<init>

Entity(tableName: String, indices: Array<Index>, inheritSuperIndices: Boolean, primaryKeys: Array<String>, foreignKeys: Array<ForeignKey>)

Marks a class as an entity. This class will have a mapping SQLite table in the database.

Each entity must have at least 1 field annotated with PrimaryKey. You can also use #primaryKeys() attribute to define the primary key.

Each entity must either have a no-arg constructor or a constructor whose parameters match fields (based on type and name). Constructor does not have to receive all fields as parameters but if a field is not passed into the constructor, it should either be public or have a public setter. If a matching constructor is available, Room will always use it. If you don't want it to use a constructor, you can annotate it with Ignore.

When a class is marked as an Entity, all of its fields are persisted. If you would like to exclude some of its fields, you can mark them with Ignore.

If a field is transient, it is automatically ignored unless it is annotated with ColumnInfo, Embedded or Relation.

Example:

 @Entity public class User { @PrimaryKey private final int uid; private String name; @ColumnInfo(name = "last_name") private String lastName; public User(int uid) { this.uid = uid; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } 

Properties

foreignKeys

val foreignKeys: Array<ForeignKey>

List of ForeignKey constraints on this entity.

Return
Array<ForeignKey>: The list of ForeignKey constraints on this entity.

inheritSuperIndices

val inheritSuperIndices: Boolean

If set to true, any Index defined in parent classes of this class will be carried over to the current Entity. Note that if you set this to true, even if the Entity has a parent which sets this value to false, the Entity will still inherit indices from it and its parents.

When the Entity inherits an index from the parent, it is always renamed with the default naming schema since SQLite does not allow using the same index name in multiple tables. See Index for the details of the default name.

By default, indices defined in parent classes are dropped to avoid unexpected indices. When this happens, you will receive a RoomWarnings#INDEX_FROM_PARENT_FIELD_IS_DROPPED or RoomWarnings#INDEX_FROM_PARENT_IS_DROPPED warning during compilation.

Return
Boolean: True if indices from parent classes should be automatically inherited by this Entity, false otherwise. Defaults to false.

indices

val indices: Array<Index>

List of indices on the table.

Return
Array<Index>: The list of indices on the table.

tableName

val tableName: String

The table name in the SQLite database. If not set, defaults to the class name.

Return
String: The SQLite tableName of the Entity.

primaryKeys

val primaryKeys: Array<String>

The list of Primary Key column names.

If you would like to define an auto generated primary key, you can use PrimaryKey annotation on the field with PrimaryKey#autoGenerate() set to true.

Return
Array<String>: The primary key of this Entity. Can be empty if the class has a field annotated with PrimaryKey.