У меня есть следующие таблицы с отношением один к одному между ними: - ServiceLocation - User - ServiceLocationAndUser
@Entity(tableName = "service_technician",
foreignKeys = @ForeignKey(entity = UserDb.class,
childColumns = "user_id",
parentColumns = "user_id"
))
public class ServiceTechnicianDb {
@PrimaryKey
private Integer id;
private String name;
private boolean active;
@ColumnInfo(name = "user_id")
private Integer userId;
}
Вот таблица пользователя:
@Entity(tableName = "user")
public class UserDb {
@PrimaryKey
@ColumnInfo(name = "user_id")
private Integer id;
@ColumnInfo(name = "first_name")
private String firstName;
@ColumnInfo(name = "last_name")
private String lastName;
}
Вот последняя таблица:
public class ServiceTechnicianAndUser {
@Embedded private ServiceTechnicianDb serviceTechnician;
@Relation(parentColumn = "user_id",
entityColumn = "user_id", entity = UserDb.class)
private UserDb user;
Я пытаюсь вставить ServiceTechnician, который содержит только одного пользователя.
@Dao public abstract class ServiceTechnicianDao implements BaseDao<ServiceTechnicianDb> {
@Transaction
@Query("SELECT * FROM service_technician")
public abstract Flowable<List<ServiceTechnicianAndUser>> getAll();
}
Вот BaseDao.
public interface BaseDao<E> {
@Insert(onConflict = OnConflictStrategy.REPLACE)
Single<Long> insert(E e);
@Insert(onConflict = OnConflictStrategy.REPLACE)
Single<List<Long>> insert(List<E> list);
@Update Single<Integer> update(E e);
@Delete Single<Integer> delete(E e);
}
Ошибка:
android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY)
Какую ошибку я допускаю при связывании внешних ключей между родительскими и дочерними таблицами?