Java 什么';Kotlin上的房间数据库有什么问题?

Java 什么';Kotlin上的房间数据库有什么问题?,java,android,kotlin,android-room,Java,Android,Kotlin,Android Room,我有一个数据类 @Entity(tableName = "type") data class Type( @PrimaryKey(autoGenerate = true) var id: Int = 0, var type: Int = 0 ) 编译项目时,我收到一条消息 错误:文件室无法选择构造函数,因为多个构造函数都是合适的 但如果我将数据类更改为 @Entity(tableName = "type") data class Type( @PrimaryKey(au

我有一个数据类

@Entity(tableName = "type")
data class Type(
    @PrimaryKey(autoGenerate = true) var id: Int = 0,
    var type: Int = 0
)
编译项目时,我收到一条消息

错误:文件室无法选择构造函数,因为多个构造函数都是合适的

但如果我将数据类更改为

@Entity(tableName = "type")
data class Type(
    @PrimaryKey(autoGenerate = true) var id: Int = 0,
    var type: String = ""
)
或java类

@Entity(tableName = "type")
public class Type {
    @PrimaryKey(autoGenerate = true)
    private int id;
    private int type;
    // getters and setters
}
它很好用。
是Kotlin bug还是其他什么?

我不知道为什么会出现这种情况,但如果您使用id?=0解决了这个问题,至少在我做的测试中是这样

Android Studio Beta 7
ext.support_version = '26 .1.0 '
ext.kotlin_version = '1.1.51'
ext.anko_version = '0.10.1'
ext.archroom_version = '1.0.0-alpha9-1'

    @Entity(tableName = "type")
    data class Type(
            @PrimaryKey(autoGenerate = true) var id: Int? = 0,
            var type: Int = 0
    )

我无法复制这个问题,您的房间版本是什么?这可能是因为Kotlin正在为您的类型类生成多个Java构造函数,而您有默认参数。这似乎与@Tuby Room version is
1.0.0-alpha3
所描述的问题有关,这是因为当您创建对象时,它应该有一个空主键,只有当您将其插入数据库时才会被填充。我认为应该将其默认为null,否则Room可能会更新索引0而不是插入。