Android Комната Компиляция Время Время о колонке в иностранном ключе, а не в индексе. Что это значит?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Комната Компиляция Время Время о колонке в иностранном ключе, а не в индексе. Что это значит?

Сообщение Anonymous »

Я использую библиотеку стойки комнаты Android из компонентов Android Architecture, недавно анонсированной в Google I/O. Кажется, что все работает, но я получаю следующую ошибку: < /p>


Предупреждение: Ссылка на столбец TAGID ссылки на внешний ключ, но не является частью индекса
. Это может запускать полные сканирования таблицы всякий раз, когда родительская таблица
модифицировано, поэтому вам рекомендуется создать индекс, который охватывает этот колонок
Примечания к тегам-это многие ко многим отношениям, отсюда и таблица JointeSteStags для обработки отображения. Таблицы просты: < /p>
Ограничения внешнего ключа определены в таблице joinnotestags . Для справки, вот оператор Create Table для ocknotestags таблицы:

Код: Выделить всё

"CREATE TABLE IF NOT EXISTS `JoinNotesTags` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`noteId` INTEGER,
`tagId` INTEGER,
FOREIGN KEY(`noteId`) REFERENCES `Note`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE ,
FOREIGN KEY(`tagId`) REFERENCES `Tag`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION
)"
< /code>

А вот соответствующая @Entity < /code> аннотация для этого класса: < /p>

@Entity(
indices = arrayOf(Index(value = *arrayOf("noteId", "tagId"), unique = true)),
foreignKeys = arrayOf(
ForeignKey(
entity = Note::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("noteId"),
onDelete = ForeignKey.CASCADE),
ForeignKey(
entity = Tag::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("tagId"))
)
)
Как вы можете видеть из аннотации @Entity , TAGID IS включен в составной уникальный индекс вместе с NoteD . Я подтвердил, что этот индекс правильно определен и в файле сгенерированных автоматических схем JSON: < /p>

"CREATE UNIQUE INDEX `index_JoinNotesTags_noteId_tagId`
ON `JoinNotesTags` (`noteId`, `tagId`)"
< /code>

Итак, мой вопрос: это предупреждение просто ошибкой в библиотеке комнаты (все еще альфа-выпуска)-т.е. анализ времени компиляции не хватает того факта, что тагид < /code> является частью этого составного индекса? Или у меня действительно есть проблема с индексацией, которую мне нужно решить, чтобы избежать полного сканирования таблицы?

Подробнее здесь: https://stackoverflow.com/questions/444 ... -of-an-ind
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»