我想用一个模型创建两个表。我该怎么做呢?
这是我的模型
@Entity(tableName = "user_table")
class UserModel
: Serializable {
@PrimaryKey
@NonNull
var _id: String = ""
var userName: String? = null
var userAvatar: String? = null
@TypeConverters(ConvertersDAO::class)
var birthDate: Date? = null
var gender: String? = null
}
和我的数据库
@Database(entities = [UserModel::class], version = 1,exportSchema = false)
abstract class UserRoomDatabase : RoomDatabase() {
abstract fun getUserDao() : UserDAO
companion object{
@Volatile
private var instance : UserRoomDatabase?= null
fun getInstance(context : Context): UserRoomDatabase{
if(instance==null)
instance = Room
.databaseBuilder(context,UserRoomDatabase::class.java,"UserRoomDatabase")
.build()
return instance!!
}
}
}
我想用一个模型创建两个表。我该怎么做呢?
简而言之,你不能,因为它是@Entity
注释和类作为实体包含在@Database类中,该类定义为a表。
最接近使用类作为模型的方法是a)继承UserModel类或b)使用@Embedded
将UserModel类嵌入到另一个类中。
但是,您仍然需要单独的Dao,因为表名是在其中指定的,不能是变量,或者使用编译时不检查的原始查询,其中表名可以作为变量传递。
如果有一个单独的表,其中的一列(可能已被索引)表示一行所属的组(User),可能会简单得多。