Zor*_*gan 4 android kotlin android-room
我收到以下错误:
error: Type of the parameter must be a class annotated with @Entity or a collection/array of it.
java.lang.String matchId);
Run Code Online (Sandbox Code Playgroud)
在我的matchedBefore()查询中:
@Dao
interface MatchedUsersDao {
// Checks to see if user has matched before (if it returns 1)
@Query("SELECT COUNT(*) FROM matched_users WHERE :matchId = match_id LIMIT 1")
fun matchedBefore(matchId: String): Int
@Insert(onConflict = OnConflictStrategy.ABORT)
fun addMatchUid(matchId: String)
}
Run Code Online (Sandbox Code Playgroud)
这是我的实体
@Entity(tableName = "matched_users")
data class MatchedUser(
@PrimaryKey(autoGenerate = true) val id: Int,
@ColumnInfo(name = "match_id") val matchId: String
)
Run Code Online (Sandbox Code Playgroud)
D B
@Database(entities = arrayOf(MatchedUser::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun matchedUsersDao(): MatchedUsersDao
}
Run Code Online (Sandbox Code Playgroud)
我在我的应用程序中实例化我的数据库:
class CustomApplication : Application() {
companion object {
var database: AppDatabase? = null
}
override fun onCreate() {
super.onCreate()
CustomApplication.database = Room.databaseBuilder(this, AppDatabase::class.java, "AppDatabase").build()
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我错误指示什么以及我如何解决它?
你的问题是这条线
@Insert(onConflict = OnConflictStrategy.ABORT)
fun addMatchUid(matchId: String)
Run Code Online (Sandbox Code Playgroud)
如果你想使用@Insert注释,你必须发送实例MatchedUser非字符串的。
这样你就可以 :
1)MatchedUser用你的id发送新的(插入空MatchedUser)
你的代码一定是这样的
@Insert(onConflict = OnConflictStrategy.ABORT)
fun addMatchUid(matchUser: MatchedUser)
Run Code Online (Sandbox Code Playgroud)
2)@Query为仅在 db 中插入 id编写新的
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |