Похоже на довольно частую ошибку, поскольку я смог найти другие вопросы, похожие на этот, но не могу точно определить, в чем проблема.
Итак, у меня есть эта Entity
@Entity(tableName = "story_id")
data class StoryIdEntity(
@PrimaryKey
@ColumnInfo(name = "type")
val type: String,
@ColumnInfo(name = "ids")
val ids: List<Int>
)
И у меня есть этот интерфейс Dao
@Dao
interface HackerNewsDaoInterface {
@Query("SELECT ids FROM story_id where type = :type")
suspend fun getStories(type: String): List<Int>
}
Когда я его компилирую, я получаю следующую ошибку:
- Сущности и POJO должны иметь пригодный для использования publi c конструктор. У вас может быть пустой конструктор или конструктор, параметры которого соответствуют полям (по имени и типу).
- Запрос возвращает некоторые столбцы [идентификаторы], которые не используются java .lang.Integer. Вы можете использовать аннотацию @ColumnInfo в полях, чтобы указать сопоставление. Вы можете подавить это предупреждение, аннотировав метод с помощью @SuppressWarnings (RoomWarnings.CURSOR_MISMATCH). Столбцы, возвращаемые запросом: ids. Поля в java .lang.Integer:
Ч / б У меня есть правильно работающий преобразователь типов для List.
Обновление 1
Пока что я изменил метод Дао, чтобы он работал.
@Dao
interface HackerNewsDaoInterface {
@Query("SELECT * FROM story_id where type = :type")
suspend fun getStories(type: String): StoryIdEntity
}