Java Android комната два внешних ключа - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть таблица с двумя внешними ключами в две разные таблицы

Это моя таблица:

@Entity(
        tableName = Constants.TABLE_NAME_PICTURE,
        foreignKeys = {
        @ForeignKey(
                entity = BIN.class,
                parentColumns = "id",
                childColumns = "bin_id"
        ),
        @ForeignKey(
                entity = ORDER.class,
                parentColumns = "id",
                childColumns = "order_id"
        )},
        indices = {@Index("id"), @Index(value = {"bin_id","order_id"})})

public class PICTURE {

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    public long id;
    @Attribute(name = "name", required = false)
    @ColumnInfo(name = "name")
    public String name;
    @ColumnInfo(name = "bin_id")
    public int binId;
    @ColumnInfo(name = "order_id")
    public int orderId;

, и когда я вставляю ИЗОБРАЖЕНИЕ в базу данных, я получаю:

android.database.sqlite.SQLiteConstraintException: сбой ограничения FOREIGN KEY (код 787)

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Кажется, вы не добавили родительскую таблицу из двух строк, такую ​​как BIN.class и Order.class.Я получил ответ от Здесь

0 голосов
/ 12 декабря 2018

Попробуйте сделать это так

foreignKeys = [
        @ForeignKey(
                entity = BIN.class,
                parentColumns = "id",
                childColumns = "bin_id"
        ),
        @ForeignKey(
                entity = ORDER.class,
                parentColumns = "id",
                childColumns = "order_id"
        )],

На самом деле в kotlin я написал эту строку следующим образом

foreignKeys = arrayOf(
            @ForeignKey(
                    entity = BIN.class,
                    parentColumns = "id",
                    childColumns = "bin_id"
            ),
            @ForeignKey(
                    entity = ORDER.class,
                    parentColumns = "id",
                    childColumns = "order_id"
            )]),

Может быть, это поможет

0 голосов
/ 12 декабря 2018

Я думаю, вы должны изменить эту строку

foreignKeys = {
    @ForeignKey(
            entity = BIN.class,
            parentColumns = {"id"},
            childColumns = {"bin_id"}
    ),
    @ForeignKey(
            entity = ORDER.class,
            parentColumns = {"id}
            childColumns = {"order_id"}
    )},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...