出了什么问题,我该如何解决?
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.root.pets/com.example.root.pets.MainActivity}: java.lang.RuntimeException: cannot find implementation for com.example.root.pets.AppDatabase. AppDatabase_Impl does not exist
@Entity
class Person {
@PrimaryKey
internal var name: String? = null
internal var age: Int = 0
internal var favoriteColor: String? = null
}
@Dao
interface PersonDao {
// Получение всех Person из бд
@get:Query("SELECT * FROM person")
val allPeople: List<Person>
// Добавление Person в бд
@Insert
fun insertAll(vararg people: Person)
// Удаление Person из бд
@Delete
fun delete(person: Person)
// Получение всех Person из бд с условием
@Query("SELECT * FROM person WHERE favoriteColor LIKE :color")
fun getAllPeopleWithFavoriteColor(color: String): List<Person>
}
@Database(entities = arrayOf(Person::class /*, AnotherEntityType.class, AThirdEntityType.class */), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract val personDao: PersonDao
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myThread = Thread(object : Runnable {
override fun run() {
var db = Room.databaseBuilder(getApplicationContext(),
AppDatabase::class.java, "populus-database4").build()
val everyone = db.personDao
val person = Person()
person.name = "John Smith"
person.age = 10000
person.favoriteColor = "black"
everyone.insertAll(person)
val persons = everyone.allPeople
Log.d("111", "${everyone.allPeople[0].name}")
}
})
myThread.start()
}
}
转到gradle文件并添加一行,找到annotationProcessor行并添加与单词kapt相同的行。这是一个例子
明白了。
@PrimaryKey- 不能null,因此:添加到 gradle 应用程序:
更正了问题。向日志添加条目和输出
name。