android - Android Room Insert 不插入也不做任何事情
问题描述
我是安卓和房间的新手。我正在使用 Dagger Hilt 注入数据库,但是当我使用 Insert 方法时没有任何反应。
实体:
@Entity(tableName = "product_table")
@Parcelize
data class Product(
@PrimaryKey
@SerializedName("id")
val id : String,
@SerializedName("title")
val title : String,
@SerializedName("price")
val price : String,
@SerializedName("category")
val category : String,
@SerializedName("description")
val description : String,
@SerializedName("image")
val image : String,
val color : String,
val size : String
): Parcelable
道:
@Dao
interface CartDao {
@Query("SELECT * FROM product_table")
fun get_all_carts(): LiveData<List<Product>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert_item_to_cart(product: Product) : Long
@Delete
suspend fun delete_item_from_cart(product: Product)
@Query("Delete FROM product_table")
fun delete_all_cart()
}
数据库:
@Database(entities = [Product::class], version = 1)
abstract class ProductDatabase : RoomDatabase() {
abstract fun productDao(): CartDao
}
匕首刀柄模组:
@Module
@InstallIn(SingletonComponent::class)
object MainActivityModule {
// Retrofit code
@Provides
@Singleton
fun provideDatabase(
app: Application,
) = Room.databaseBuilder(
app,
ProductDatabase::class.java,
"product_db").build()
@Provides
fun provideTaskDao(db: ProductDatabase) = db.productDao()
}
片段视图模型:
@HiltViewModel
class ProductViewModel @Inject constructor(
private val productDao : CartDao
) : ViewModel() {
init {
}
fun insert_item_to_cart(product: Product){
viewModelScope.launch{
productDao.insert_item_to_cart(product)
}
}
}
片段按钮 OnClickListener:
btn_add_to_cart.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
val num = viewModel.insert_item_to_cart(
args.productData.copy(
color = selected_color,
size = selected_size
)
)
Log.d(TAG, "Inserted : ${num}")
}
})
当我的 Insert 函数返回Long
这将是插入产品的主键时,该日志应该返回该数字,但它根本没有返回任何内容。希望有人可以帮助我,感谢您的关注。
解决方案
推荐阅读
- java - Firebase,更新特定字段
- swift - 删除 SwiftUI 子视图中的大量空白
- python - 多处理中的 Biopython Entrez 请求失败
- selenium-chromedriver - 使用 watir chromedriver 进行测试失败,请求标头中的 Sec-Fetch-User
- android - 如何从测试中访问字符串资源?
- excel - 最初如何让 Range 成为 Nothing?
- wso2carbon - WSO2 流处理器 oauth2 授权
- sql - 在从 SQL Server 中删除之前将 SQL Server 表复制到 txt 文件中
- java - 特定匹配的正则表达式格式
- ruby - 调酒师挑战,错误 ocde:challange3.rb:64:in `
': nil:NilClass (NoMethodError) 的未定义方法 `+'