android - 房间 : Conflicting Declarations

标签 android kotlin android-room

我想在当前 pb 中添加值、日期和详细信息。我在 pbInfo 的数据库中收到错误“冲突声明”。我应该如何修复此错误?

@Entity(tableName = "pb_table")
data class Pb(@PrimaryKey
              val pb: String)

@Entity
data class PbInfo(@PrimaryKey
                  var value: Double,
                  var date: Int,
                  var details: String)

@Dao
interface PbInfoDao {


    @Insert
    fun update(vararg pbInfo: PbInfo): LongArray

 INSTANCE?.let { database ->
                    scope.launch {
                        populateDatabase(database.pbDao(), database.pbInfo())
                    }
                }
            }
            suspend fun populateDatabase(pbDao: PbDao, pbInfoDao: PbInfoDao) {
                pbDao.deleteAll()

                var pb = Pb("Squat")
                pbDao.insert(pb)
                var pbInfo = PbInfo(122.5, 28, "I was feeling on top form today!")

最佳答案

首先,你在一个类中有两个实体(可能是冲突的)

因此,为单独的 Entity 添加单独的类。

然后,在您的 RoomDatabase 抽象类中,像这样添加两个实体类(同时创建单独的 Dao 接口(interface)类):

@Database(entities = [(Pb::class), (Pbinfo::class)] ,version = 2)
abstract class YourRoomDatabaseClass: RoomDatabase(){
    ...
     abstract fun pbDao() : PbDao
     abstract fun pbinfoDao(): PbinfoDao
    ...
}

这应该可以解决实体类的冲突。我有一个包含两个实体的数据库,并且运行没有任何问题。 (请注意我,因为我不知道 Kotlin 语法)

关于android - 房间 : Conflicting Declarations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57445956/

相关文章:

android - 为什么 camerax 示例项目不将常量放入类中?

android - 为什么 Kotlin 中的 Fragment 中 "activity"链接到 "getActivity()"?

android - 在新的 Room 持久性库中创建等效的 View

java - 如何在 Java 类上的 Kotlin 中声明扩展静态函数?

enums - Kotlin中的C++枚举

android - Room 无法验证数据完整性,即使在卸载应用程序然后重新安装后也是如此

android - 从数据绑定(bind)错误中找出实际错误

android - 在 Android 中使用 Apache Commons lib 时的奇怪行为

java - 多个 Activity 和 fragment 中的相同 Spinner。哪种实现方式最好?

android - 取回服务中的按键