Entity
public
abstract
@interface
Entity
implements
Annotation
android.arch.persistence.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; } }
See also:
Summary
Public methods | |
---|---|
ForeignKey[]
|
foreignKeys()
List of |
Index[]
|
indices()
List of indices on the table. |
boolean
|
inheritSuperIndices()
If set to |
String[]
|
primaryKeys()
The list of Primary Key column names. |
String
|
tableName()
The table name in the SQLite database. |
Inherited methods | |
---|---|
Public methods
foreignKeys
ForeignKey[] foreignKeys ()
List of ForeignKey
constraints on this entity.
Returns | |
---|---|
ForeignKey[] |
The list of ForeignKey constraints on this entity.
|
indices
Index[] indices ()
List of indices on the table.
Returns | |
---|---|
Index[] |
The list of indices on the table. |
inheritSuperIndices
boolean inheritSuperIndices ()
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 INDEX_FROM_PARENT_FIELD_IS_DROPPED
or INDEX_FROM_PARENT_IS_DROPPED
warning during compilation.
Returns | |
---|---|
boolean |
True if indices from parent classes should be automatically inherited by this Entity, false otherwise. Defaults to false. |
primaryKeys
String[] primaryKeys ()
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 autoGenerate()
set to true
.
Returns | |
---|---|
String[] |
The primary key of this Entity. Can be empty if the class has a field annotated
with PrimaryKey .
|
tableName
String tableName ()
The table name in the SQLite database. If not set, defaults to the class name.
Returns | |
---|---|
String |
The SQLite tableName of the Entity. |
Annotations
Classes
Enums
Exceptions