androidpersistent-storageandroid-room

Android Room - Get the id of new inserted row with auto-generate


This is how I am inserting data into database using Room Persistence Library:

Entity:

@Entity
class User {
    @PrimaryKey(autoGenerate = true)
    public int id;
    //...
}

Data access object:

@Dao
public interface UserDao{
    @Insert(onConflict = IGNORE)
    void insertUser(User user);
    //...
}

Is it possible to return the id of User once the insertion is completed in the above method itself without writing a separate select query?


Solution

  • Based on the documentation here (below the code snippet)

    A method annotated with the @Insert annotation can return:

    • long for single insert operation
    • long[] or Long[] or List<Long> for multiple insert operations
    • void if you don't care about the inserted id(s)