Не могу удалить сущность из комнаты

Я имею LoggedInUserEntity а также UserRecentSearch где последний имеет иностранные ключи LoggedInUserEntity, Когда я хочу удалить LoggedInUserEntity это возможно, если только нет UserRecentSearch находятся в базе данных.

Как мне удалить?

@Query("DELETE FROM loggedInUser")

Как я могу использовать отношения?

@Entity(tableName = "recentSearches",
    indices = arrayOf(Index(value = "userId",name = "idr")),
    foreignKeys = arrayOf(ForeignKey(
            entity = LoggedInUserEntity::class,
            parentColumns = arrayOf("id"),
            childColumns = arrayOf("userId"))
    ))

Как я могу удалить LoggedInUserEntity с существующими UserRecentSearch?

1 ответ

Вам нужно добавить свойство cascade в ограничение внешнего ключа для метода onDelete, который будет выглядеть примерно так:

@Entity(tableName = "recentSearches",
    indices = arrayOf(Index(value = "userId", name = "idr")),
    foreignKeys = arrayOf(ForeignKey(
    entity = LoggedInUserEntity::class
        parentColumns = arrayOf("id"),
        childColumns = arrayOf("userId"),
        onDelete = CASCADE
    ))
))

Это означает, что при удалении LoggedInUser из вашей БД любой из недавних поисков для этого пользователя с ключом foriegn также будет удален.

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