在房间版本 1.1.1 中创建复合主键时,无法使用 Kotlin 编译器构建 android 工作室项目



当我在字段上创建一个带有"primaryKey"注释的"实体"以使用room创建任何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;
    }
}

主键字段应用@NonNull注释。您必须在 JAVA 中为主键字段注释@NonNull,在 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;
    }
}

最新更新