# PrimaryKey

Summary:[Methods](https://developer.android.com/reference/android/arch/persistence/room/PrimaryKey#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/arch/persistence/room/PrimaryKey#inhmethods)  

# PrimaryKey

| The`android.arch`Architecture Components packages are no longer maintained. They have been superseded by the corresponding[androidx.\*](https://developer.android.com/jetpack/androidx/migrate)packages. See[androidx.room.PrimaryKey](https://developer.android.com/reference/androidx/room/PrimaryKey)instead.

`
public


abstract
@interface
PrimaryKey
`  
`


implements

Annotation


`

|------------------------------------------|
| android.arch.persistence.room.PrimaryKey |

<br />

*** ** * ** ***

Marks a field in an[Entity](https://developer.android.com/reference/android/arch/persistence/room/Entity)as the primary key.

If you would like to define a composite primary key, you should use[primaryKeys()](https://developer.android.com/reference/android/arch/persistence/room/Entity#primaryKeys())method.

Each[Entity](https://developer.android.com/reference/android/arch/persistence/room/Entity)must declare a primary key unless one of its super classes declares a primary key. If both an[Entity](https://developer.android.com/reference/android/arch/persistence/room/Entity)and its super class defines a`PrimaryKey`, the child's`PrimaryKey`definition will override the parent's`PrimaryKey`.

If`PrimaryKey`annotation is used on a[Embedded](https://developer.android.com/reference/android/arch/persistence/room/Embedded)d field, all columns inherited from that embedded field becomes the composite primary key (including its grand children fields).

## Summary

|                                                                                  ### Public methods                                                                                   ||
|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` boolean` | ` `[autoGenerate](https://developer.android.com/reference/android/arch/persistence/room/PrimaryKey#autoGenerate())`() ` Set to true to let SQLite generate the unique id. |

| ### Inherited methods |
|-----------------------|---|
| From interface` java.lang.annotation.Annotation ` |-----------------------------------------|-------------------------| | ` abstract Class<? extends Annotation>` | ` annotationType() `    | | ` abstract boolean`                     | ` equals(Object arg0) ` | | ` abstract int`                         | ` hashCode() `          | | ` abstract String`                      | ` toString() `          | ||

## Public methods

### autoGenerate

```
boolean autoGenerate ()
```

Set to true to let SQLite generate the unique id.

When set to`true`, the SQLite type affinity for the field should be`INTEGER`.

If the field type is`long`or`int`(or its TypeConverter converts it to a`long`or`int`),[Insert](https://developer.android.com/reference/android/arch/persistence/room/Insert)methods treat`0`as not-set while inserting the item.

If the field's type is[Integer](https://developer.android.com/reference/java/lang/Integer)or[Long](https://developer.android.com/reference/java/lang/Long)(or its TypeConverter converts it to an[Integer](https://developer.android.com/reference/java/lang/Integer)or a[Long](https://developer.android.com/reference/java/lang/Long)),[Insert](https://developer.android.com/reference/android/arch/persistence/room/Insert)methods treat`null`as not-set while inserting the item.

<br />

|                                                 Returns                                                 ||
|-----------|----------------------------------------------------------------------------------------------|
| `boolean` | Whether the primary key should be auto-generated by SQLite or not. Defaults to false. <br /> |

-

  ## Annotations

  - [ColumnInfo](https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo)
  - [ColumnInfo.Collate](https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo.Collate)
  - [ColumnInfo.SQLiteTypeAffinity](https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo.SQLiteTypeAffinity)
  - [Dao](https://developer.android.com/reference/android/arch/persistence/room/Dao)
  - [Database](https://developer.android.com/reference/android/arch/persistence/room/Database)
  - [Delete](https://developer.android.com/reference/android/arch/persistence/room/Delete)
  - [Embedded](https://developer.android.com/reference/android/arch/persistence/room/Embedded)
  - [Entity](https://developer.android.com/reference/android/arch/persistence/room/Entity)
  - [ForeignKey](https://developer.android.com/reference/android/arch/persistence/room/ForeignKey)
  - [ForeignKey.Action](https://developer.android.com/reference/android/arch/persistence/room/ForeignKey.Action)
  - [Ignore](https://developer.android.com/reference/android/arch/persistence/room/Ignore)
  - [Index](https://developer.android.com/reference/android/arch/persistence/room)
  - [Insert](https://developer.android.com/reference/android/arch/persistence/room/Insert)
  - [OnConflictStrategy](https://developer.android.com/reference/android/arch/persistence/room/OnConflictStrategy)
  - [PrimaryKey](https://developer.android.com/reference/android/arch/persistence/room/PrimaryKey)
  - [Query](https://developer.android.com/reference/android/arch/persistence/room/Query)
  - [RawQuery](https://developer.android.com/reference/android/arch/persistence/room/RawQuery)
  - [Relation](https://developer.android.com/reference/android/arch/persistence/room/Relation)
  - [SkipQueryVerification](https://developer.android.com/reference/android/arch/persistence/room/SkipQueryVerification)
  - [Transaction](https://developer.android.com/reference/android/arch/persistence/room/Transaction)
  - [TypeConverter](https://developer.android.com/reference/android/arch/persistence/room/TypeConverter)
  - [TypeConverters](https://developer.android.com/reference/android/arch/persistence/room/TypeConverters)
  - [Update](https://developer.android.com/reference/android/arch/persistence/room/Update)
-

  ## Classes

  - [DatabaseConfiguration](https://developer.android.com/reference/android/arch/persistence/room/DatabaseConfiguration)
  - [InvalidationTracker](https://developer.android.com/reference/android/arch/persistence/room/InvalidationTracker)
  - [InvalidationTracker.Observer](https://developer.android.com/reference/android/arch/persistence/room/InvalidationTracker.Observer)
  - [Room](https://developer.android.com/reference/android/arch/persistence/room/Room)
  - [RoomDatabase](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase)
  - [RoomDatabase.Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)
  - [RoomDatabase.Callback](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Callback)
  - [RoomDatabase.MigrationContainer](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.MigrationContainer)
  - [RoomWarnings](https://developer.android.com/reference/android/arch/persistence/room/RoomWarnings)
  - [RxRoom](https://developer.android.com/reference/android/arch/persistence/room/RxRoom)
-

  ## Enums

  - [RoomDatabase.JournalMode](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.JournalMode)
-

  ## Exceptions

  - [EmptyResultSetException](https://developer.android.com/reference/android/arch/persistence/room/EmptyResultSetException)