Не могу понять нюанс работы с Room. Добавление в базу данных связанных через внешний ключ записей получается только так:
int id = (int) database.userDao().insert(user);
Position position = new Position();
position.setUserId(id);
position.setName("programmer");
database.positionDao().insert(position);
Хотя в примерах достаточно так:
database.userDao().insert(user);
database.positionDao().insert(position);
Во втором варианте у меня возникает ошибка FOREIGN KEY constraint failed (code 787). Аннотации настроены:
@Entity(foreignKeys = {@ForeignKey(
entity = User.class,
parentColumns = "id",
childColumns = "userId",
onDelete = CASCADE)}, indices = {@Index(value = "userId")})
public class Position {
@PrimaryKey(autoGenerate = true)
private int id;
private int userId;
private String name;
...
}
@Entity
public class User {
@PrimaryKey(autoGenerate = true)
private int id;
private String name;
private int age;
private boolean isLogged;
...
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей