Комната возвращается долго, но не вставляя данные в таблицу - отношение один ко многим - PullRequest
0 голосов
/ 27 мая 2019

у меня есть два класса сущности

@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, строка не вставляется, однако комната возвращает значение Long, вот мой дао

@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 не перехватывал никаких исключений, код выводит длинное значение, но когда я загружаю БД из эмулятора и вижу таблицу, я не могу найти в ней строку, а getAllTrackingItems () из дао возвращает 0 строк что я сделал не так?

1 Ответ

0 голосов
/ 27 мая 2019

По какой-то странной причине удаление tableName = "TrackingItemDataTable" из второго класса сущностей решило проблему, не зная, почему это произошло

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...