使用Room over Android多模块Kotlin设置有任何成功。
@Entity
data class School(@Embedded val student: Student)
data class Student(val age: Int = 0)
每当我在主模块中同时拥有上述两个类时,一切都会正确编译。
但是,如果我将学生类移动到另一个Android库模块,并将学校移动到主模块中。它抛出编译时错误:
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).
Tried the following constructors but they failed to match:
Student(int) : [arg0 : null]
注意:在调试中发现这可能是名称错误问题。如果我将Student类更改为data class Student(val arg0: Int = 0)
,则编译正常。
看起来在编译时age
公开为arg0
知道如何解决此问题吗?
答案 0 :(得分:0)
我有同样的问题。实体和Room DAO可以将所有模块放置在同一个模块中,将实体放在单独的模块中断编译中。就我而言,问题是将枚举声明与实体放在同一文件中。在单独的文件中声明枚举可以解决此问题。