Сбой ограничения FOREIGN KEY в Android Room (код 787) при вставке новой строки

Я подписался на этот пост. Не удалось установить ограничение для Android Room FOREIGN KEY (код 787). К сожалению, это не работает в моем случае.

Я всегда получаю сообщение об ошибке при попытке вставить новую заметку. Конечно, в базе данных существует тема.

Ребята, у вас есть идеи?

Пожалуйста, посмотрите на мой код ниже.

Тема:

@Entity(tableName = "topic")
data class Topic(@PrimaryKey var id: Long? = null,
            @ColumnInfo(name = "name") var name: String,
            @ColumnInfo(name = "note_count") var noteCount: Int = 0,
            @ColumnInfo(name = "view_count") var viewCount: Long = 0) : Serializable {
    @Ignore
    var notes: List<Note>? = null
}

Замечания:

@Entity(tableName = "note",
        foreignKeys = arrayOf(ForeignKey(entity = Topic::class,
        parentColumns = arrayOf("id"), childColumns = arrayOf("topic_id"), onDelete = ForeignKey.CASCADE)))
@TypeConverters(TimestampConverter::class)
data class Note(@PrimaryKey(autoGenerate = true) var noteId: Long? = null,
           @ColumnInfo(name = "topic_id") var topicId: Long? = null,
           @ColumnInfo(name = "title") var title: String,
           @ColumnInfo(name = "caption") var caption: String? = "",
           @ColumnInfo(name = "created_at") var createdAt: Date? = null) : Serializable {

}

NoteDao:

@Dao
interface NoteDao {
    @Query("SELECT * from note")
    fun getAll(): LiveData<List<Note>>

    @Insert(onConflict = REPLACE)
    fun insert(note: Note)

    @Query("DELETE from note")
    fun deleteAll()

    @Delete
    fun delete(category: Note)

    @Query("SELECT * FROM note WHERE title = :title COLLATE NOCASE LIMIT 1")
    fun findNoteByTitle(title: String): Note?

    @Query("SELECT * FROM note WHERE topic_id = :topicId")
    fun findNotesByTopicId(topicId: Long): LiveData<List<Note>>

    @Query("SELECT count(*) FROM note WHERE topic_id = :topicId")
    fun countNotesByTopicId(topicId: Long): Long

    @Update(onConflict = IGNORE)
    fun update(category: Note)
}

2 ответа

Решение

Я нашел проблему. Потому что у меня было создано 2 разные базы данных: TopicDataBase и NoteDataBase.

Так что мне просто нужно удалить 1 из них. Мой плохой>"<

(@PrimaryKey var id: Long? = null, выглядит как проблема. Первичный ключ не может быть нулевым

Другие вопросы по тегам