Android Сбой ограничения номера FOREIGN KEY, код 787 - PullRequest
0 голосов
/ 04 мая 2020

У меня есть следующие таблицы с отношением один к одному между ними: - 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)

Какую ошибку я допускаю при связывании внешних ключей между родительскими и дочерними таблицами?

...