Невозможно собрать андроид студийный проект с компилятором Kotlin при создании составного первичного ключа в комнате версии 1.1.1 - PullRequest
0 голосов
/ 25 апреля 2019

Пока я создаю «Entity» с аннотацией «primaryKey» над полем для создания любой таблицы SQLite с использованием комнаты, проект Android Studio успешно компилируется. Но пока я пытаюсь создать «сущность» с составным первичным ключом, я не могу построить проект. К сожалению, поскольку я использую «Dagger 2» в моем проекте, я не вижу фактической ошибки сборки.

Примечание : проект соответствует компилятору Kotlin.

Код

@Entity(tableName = "thread_users", primaryKeys = {"thread_id", "user_id"})
public class DMThreadUsers {
    @ColumnInfo(name = "thread_id")
    private String threadId;
    @ColumnInfo(name = "user_id")
    private String userId;
    @ColumnInfo(name = "is_left")
    private boolean isLeft;

    public DMThreadUsers() {
    }

    public String getThreadId() {
        return threadId;
    }

    public void setThreadId(String threadId) {
        this.threadId = threadId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public boolean isLeft() {
        return isLeft;
    }

    public void setLeft(boolean left) {
        isLeft = left;
    }
}

1 Ответ

0 голосов
/ 26 апреля 2019

Поля первичного ключа должны быть аннотированы @NonNull. Вы должны аннотировать @NonNull в JAVA для полей первичного ключа, а в KOTLIN нужно инициализировать поля первичного ключа.

@Entity(tableName = "thread_users", primaryKeys = {"thread_id", "user_id"})
public class DMThreadUsers {
    @NonNull
    @ColumnInfo(name = "thread_id")
    private String threadId;
    @NonNull
    @ColumnInfo(name = "user_id")
    private String userId;
    @ColumnInfo(name = "is_left")
    private boolean isLeft;

    public DMThreadUsers() {
    }

    public String getThreadId() {
        return threadId;
    }

    public void setThreadId(String threadId) {
        this.threadId = threadId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public boolean isLeft() {
        return isLeft;
    }

    public void setLeft(boolean left) {
        isLeft = left;
    }
}
...