RoomWarnings


public class RoomWarnings


The list of warnings that are produced by Room.

You can use these values inside a SuppressWarnings annotation to disable the warnings.

Summary

Constants

static final @NonNull String

Reported when there is an ambiguous column on the result of a multimap query.

static final @NonNull String

Reported when Room cannot verify database queries during compilation.

static final @NonNull String

This field is deprecated. Replaced by QUERY_MISMATCH.

static final @NonNull String

Reported when a POJO has multiple constructors, one of which is a no-arg constructor.

static final @NonNull String

The warning dispatched by Room when the object in the provided method's multimap return type does not implement equals() and hashCode().

static final @NonNull String

Reported when an Entity that has a Embedded field whose type is another Entity and that Entity has some indices defined.

static final @NonNull String

Reported when an Entity field that is annotated with Embedded has a sub field which has a ColumnInfo annotation with index = true.

static final @NonNull String

Reported when an Entity inherits a field from its super class and the field has a ColumnInfo annotation with index = true.

static final @NonNull String

Reported when an Entity's parent declares an Index.

static final @NonNull String

Reported when an @Entity field's type do not exactly match the getter type.

static final @NonNull String

Reported when an @Entity field's type do not exactly match the setter type.

static final @NonNull String

When there is a foreign key from Entity A to Entity B, it is a good idea to index the reference columns in B, otherwise, each modification on Entity A will trigger a full table scan on Entity B.

static final @NonNull String

Reported when a junction entity whose column is used in a @Relation field with a @Junction does not contain an index.

static final @NonNull String

Reported when Room cannot verify database queries during compilation due to lack of tmp dir access in JVM.

static final @NonNull String

Reported when a room.schemaLocation argument is not provided into the annotation processor.

static final @NonNull String

Reported when an Entity field that is annotated with Embedded has a sub field which is annotated with PrimaryKey but the PrimaryKey is dropped while composing it into the parent object.

static final @NonNull String

The warning dispatched by Room when the return value of a Query method does not exactly match the columns in the query result.

static final @NonNull String

Reported when a @Query method returns a POJO that has relations but the method is not annotated with @Transaction.

static final @NonNull String

Reported when a Relation's SQLite column type does not match the type in the parent.

static final @NonNull String

Reported when a nullable Collection, Array or Optional is returned from a DAO method.

Public constructors

This method is deprecated. This type should not be instantiated as it contains only static methods.

Constants

AMBIGUOUS_COLUMN_IN_RESULT

public static final @NonNull String AMBIGUOUS_COLUMN_IN_RESULT

Reported when there is an ambiguous column on the result of a multimap query.

CANNOT_CREATE_VERIFICATION_DATABASE

public static final @NonNull String CANNOT_CREATE_VERIFICATION_DATABASE

Reported when Room cannot verify database queries during compilation. This usually happens when it cannot find the SQLite JDBC driver on the host machine.

Room can function without query verification but its functionality will be limited.

CURSOR_MISMATCH

Added in 2.7.0-alpha11
Deprecated in 2.7.0-alpha11
public static final @NonNull String CURSOR_MISMATCH

The warning dispatched by Room when the return value of a Query method does not exactly match the fields in the query result.

DEFAULT_CONSTRUCTOR

public static final @NonNull String DEFAULT_CONSTRUCTOR

Reported when a POJO has multiple constructors, one of which is a no-arg constructor. Room will pick that one by default but will print this warning in case the constructor choice is important. You can always guide Room to use the right constructor using the @Ignore annotation.

DOES_NOT_IMPLEMENT_EQUALS_HASHCODE

public static final @NonNull String DOES_NOT_IMPLEMENT_EQUALS_HASHCODE

The warning dispatched by Room when the object in the provided method's multimap return type does not implement equals() and hashCode().

INDEX_FROM_EMBEDDED_ENTITY_IS_DROPPED

public static final @NonNull String INDEX_FROM_EMBEDDED_ENTITY_IS_DROPPED

Reported when an Entity that has a Embedded field whose type is another Entity and that Entity has some indices defined. These indices will NOT be created in the containing Entity. If you want to preserve them, you can re-define them in the containing Entity.

INDEX_FROM_EMBEDDED_FIELD_IS_DROPPED

public static final @NonNull String INDEX_FROM_EMBEDDED_FIELD_IS_DROPPED

Reported when an Entity field that is annotated with Embedded has a sub field which has a ColumnInfo annotation with index = true.

You can re-define the index in the containing Entity.

INDEX_FROM_PARENT_FIELD_IS_DROPPED

public static final @NonNull String INDEX_FROM_PARENT_FIELD_IS_DROPPED

Reported when an Entity inherits a field from its super class and the field has a ColumnInfo annotation with index = true.

These indices are dropped for the Entity and you would need to re-declare them if you want to keep them. Alternatively, you can set Entity.inheritSuperIndices to true.

INDEX_FROM_PARENT_IS_DROPPED

public static final @NonNull String INDEX_FROM_PARENT_IS_DROPPED

Reported when an Entity's parent declares an Index. Room does not automatically inherit these indices to avoid hidden costs or unexpected constraints.

If you want your child class to have the indices of the parent, you must re-declare them in the child class. Alternatively, you can set Entity.inheritSuperIndices to true.

MISMATCHED_GETTER

public static final @NonNull String MISMATCHED_GETTER

Reported when an @Entity field's type do not exactly match the getter type. For instance, in the following class:

@Entity
class Foo {
...
private val value: Boolean
public fun getValue(): Boolean {
return value == null ? false : value
}
}

Trying to insert this entity into database will always set value column to false when Foo.value is null since Room will use the getValue method to read the value. So even thought the database column is nullable, it will never be inserted as null if inserted as a Foo instance.

MISMATCHED_SETTER

public static final @NonNull String MISMATCHED_SETTER

Reported when an @Entity field's type do not exactly match the setter type. For instance, in the following class:

@Entity
class Foo {
...
private val value: Boolean
public fun setValue(value: Boolean) {
this.value = value
}
}

If Room reads this entity from the database, it will always set Foo.value to false when the column value is null since Room will use the setValue method to write the value.

MISSING_INDEX_ON_FOREIGN_KEY_CHILD

public static final @NonNull String MISSING_INDEX_ON_FOREIGN_KEY_CHILD

When there is a foreign key from Entity A to Entity B, it is a good idea to index the reference columns in B, otherwise, each modification on Entity A will trigger a full table scan on Entity B.

If Room cannot find a proper index in the child entity (Entity B in this case), Room will print this warning.

MISSING_INDEX_ON_JUNCTION

public static final @NonNull String MISSING_INDEX_ON_JUNCTION

Reported when a junction entity whose column is used in a @Relation field with a @Junction does not contain an index. If the column is not covered by any index then a full table scan might be performed when resolving the relationship.

It is recommended that columns on entities used as junctions contain indices, otherwise Room will print this warning.

MISSING_JAVA_TMP_DIR

public static final @NonNull String MISSING_JAVA_TMP_DIR

Reported when Room cannot verify database queries during compilation due to lack of tmp dir access in JVM.

MISSING_SCHEMA_LOCATION

public static final @NonNull String MISSING_SCHEMA_LOCATION

Reported when a room.schemaLocation argument is not provided into the annotation processor. You can either set Database.exportSchema to false or provide room.schemaLocation to the annotation processor. You are strongly advised to provide it and also commit them into your version control system.

PRIMARY_KEY_FROM_EMBEDDED_IS_DROPPED

public static final @NonNull String PRIMARY_KEY_FROM_EMBEDDED_IS_DROPPED

Reported when an Entity field that is annotated with Embedded has a sub field which is annotated with PrimaryKey but the PrimaryKey is dropped while composing it into the parent object.

QUERY_MISMATCH

public static final @NonNull String QUERY_MISMATCH

The warning dispatched by Room when the return value of a Query method does not exactly match the columns in the query result.

RELATION_QUERY_WITHOUT_TRANSACTION

public static final @NonNull String RELATION_QUERY_WITHOUT_TRANSACTION

Reported when a @Query method returns a POJO that has relations but the method is not annotated with @Transaction. Relations are run as separate queries and if the query is not run inside a transaction, it might return inconsistent results from the database.

RELATION_TYPE_MISMATCH

public static final @NonNull String RELATION_TYPE_MISMATCH

Reported when a Relation's SQLite column type does not match the type in the parent. Room will still do the matching using String representations.

UNNECESSARY_NULLABILITY_IN_DAO_RETURN_TYPE

public static final @NonNull String UNNECESSARY_NULLABILITY_IN_DAO_RETURN_TYPE

Reported when a nullable Collection, Array or Optional is returned from a DAO method. Room will return an empty Collection, Array or Optional respectively if no results are returned by such a query, hence using a nullable return type is unnecessary in this case.

Public constructors

RoomWarnings

Added in 2.0.0
Deprecated in 2.0.0
public RoomWarnings()