当前位置: 首页 > 知识库问答 >
问题:

Room返回long,但不向表中插入数据-一对多关系

徐涵亮
2023-03-14

我有两个实体类

@Entity(tableName = "TrackingItemTable")
data class TrackingItem(
                        @ColumnInfo val ProductName:String,
                        @ColumnInfo val ProductPrice:Float,
                        @ColumnInfo val ProductImage:String,
                        @ColumnInfo val ProductCurrencySymbol:String,
                        @ColumnInfo val ProductAddedDate: Date,
                        @ColumnInfo val ProductSiteName:String,
                        @PrimaryKey @ColumnInfo val ProductUrl:String,
                        @ColumnInfo val ProductAffiliateUrl:String,
                        @ColumnInfo var ProductNotificationPrice:Float? = null,
                        @ColumnInfo var ProductLastUpdatedPrice:Float
)

它与另一个实体有一种外国的关键关系

@Entity(foreignKeys = arrayOf(ForeignKey(entity = TrackingItem::class,
    parentColumns = arrayOf("ProductUrl"),
    childColumns = arrayOf("ProductAnalyticsUrl"),
    onDelete = ForeignKey.CASCADE)), tableName = "TrackingItemDataTable")



data class TrackingItemData(@ColumnInfo val ProductAnalyticsUrl:String,
                            @ColumnInfo val Price:Float,
                            @ColumnInfo val Date: Long,
                            @PrimaryKey(autoGenerate = true) @ColumnInfo var id:Int = 0
)

每当我尝试在TrackingItemData表中插入一行时,该行没有被插入,但是房间返回一个长值,这是我的dao

@Dao
interface TrackingItemDataDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insertTrackingItemData(trackingItemData:TrackingItemData): Single<Long>

    @Query("SELECT * FROM TrackingItemDataTable")
    fun getAllTrackingItems():LiveData<List<TrackingItemData>>

}

我像这样插入数据

Db.analyticsDao().insertTrackingItemData(
    TrackingItemData(ProductAnalyticsUrl = url,
        Price = currentPrice,
        Date = currentTime))
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({
        Log.d("shopzy", it.toString())
    },{
        Log.d("shopzy", it.toString())
    })

rx java的throwable没有捕获任何异常,代码打印长值,但是当我从emulator下载db并看到表时,我在其中找不到一行,dao的getAllTrackingItems()返回0行,我做错了什么?

共有1个答案

乔望
2023-03-14

出于某种奇怪的原因,从第二个实体类中删除tableName="TrackingItemDataTable"解决了这个问题,但不确定为什么会这样

 类似资料:
  • 救命啊!我只在一对多关系数据库中插入POJO时遇到问题。我有POJO和误解如何插入数据库中的所有列表??? 请帮帮我伙计们!

  • 问题内容: 我使用以下jQuery通过数据服务插入数据。事件虽然我得到了状态响应201,并且数据已成功插入到我的数据库中,但系统仍然将其视为错误并给我“失败”警报? 我在这里想念什么? 更新: 来自Fire Bug的调试消息: 问题答案: 您必须发送{dataType:’text’}才能使成功函数与jQuery和空响应一起使用。

  • 本文向大家介绍mysql 一次向表中插入多条数据实例讲解,包括了mysql 一次向表中插入多条数据实例讲解的使用技巧和注意事项,需要的朋友参考一下 mysql一次插入多条数据: 我们先来创建一种表Authors: 然后向表中一次性插入多条数据,sql插入代码如下: 其实与一条一条插入的SQL语句非常类似,只是多条插入语句使用逗号将每条数据分开。 结果如下: AuthID AuthFN AuthMN

  • 我在用户和角色之间有多对多的关系 用户实体: 角色实体: 用户角色实体: 服务等级: 样本输入: 1:首次储蓄-成功 示例输入2:向同一用户保存其他角色-失败 异常:(尝试在链接实体中的用户和角色中插入null) 在用户实体的映射或实用方法中是否缺少某些内容。非常感谢您的帮助。

  • 问题内容: 我正在使用SQL Server 2005。 我正在将数据从当前数据库(单个表)迁移到新数据库(规范化-许多表)。在新数据库中,我有一个基表(我们称它为“ BaseTable”)和多个其他表(我们称它们为和)。来自旧数据库的某些数据将转到BaseTable,而另一些将转到其他两个。BaseTable与DependentA和DependentB都具有一对一关系,使用它们的ID作为外键。 所

  • 母实体 子实体 代码持久化 请告诉我这些步骤是否正确。我有以下例外。并且无法理解为什么父id在子表中不可用 原因:org.hibernate.exception.ConstraintViolation异常:无法将值NULL插入到列PARAM_REF_ID,表PARAM中;列不允许空值。INSERT失败。