与房间的多对多关系导致错误:实体和Pojos必须有一个可用的公共构造函数

我遇到了标题中提到的问题。 我有以下实体:

@Entity(tableName = "Person") data class Person(@PrimaryKey var id: Int, var firstName: String, var surname: String, var age: Int, var numberOfHobbies: Int) { @Ignore constructor() : this(0, "", "", 0, 0) } @Entity(tableName = "Skill") data class Skill(@PrimaryKey var id: Int, var skillName: String) { @Ignore constructor() : this(0, "") } @Entity(tableName = "PersonSkill") data class PersonSkill(var personId: Int, var skillId: Int) { @Ignore constructor() : this(0, 0) @field:PrimaryKey(autoGenerate = true) var id: Int = 0 } 

和以下关系:

 data class SkillWithPersons( @Embedded var skill: Skill = Skill(0, "UNKNOWN"), @Relation( parentColumn = "id", entityColumn = "skillId", entity = PersonSkill::class, projection = arrayOf("personId") ) var personIds: List<Int> = emptyList() ) { constructor() : this(Skill(0, "UNKNOWN"), emptyList()) } data class PersonWithSkills( @Embedded var person: Person = Person(0, "UNKNOWN", "UNKNOWN", 0, 0), @Relation( parentColumn = "id", entityColumn = "personId", entity = PersonSkill::class, projection = arrayOf("skillId") ) var skillIds: List<Int> = emptyList() ) { constructor(): this(Person(0, "UNKNOWN", "UNKNOWN", 0, 0), emptyList()) } 

而我已经尝试了一切,但它不工作。 我不断收到kotlin-kapt的以下错误:

 e: error: Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). e: e: Tried the following constructors but they failed to match: e: Integer(int) : [value : null] e: Integer(java.lang.String) : [s : null] e: error: Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). e: e: java.lang.IllegalStateException: 

我正在使用以下版本:

Android Studio 3.0与Gradle 4,房间: 1.0.0-alpha9-1 ,构建工具: 26.0.2 ,Kotlin: 1.1.51

看来有一个使用@Relation的错误,因为kotin-kapt似乎没有处理它。 有没有人遇到过这种情况? 我甚至试图从@Relation删除projection ,但即使这似乎没有区别。