Комната Android не распознает имя столбца из схемы (используя псевдоним для имени столбца) - PullRequest
0 голосов
/ 09 ноября 2018

Я относительно новичок в Android Development и использую его библиотеку постоянства Room. Проблема, с которой я сейчас сталкиваюсь, заключается в следующей ошибке:

error: There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: s_abb)

Однако моя схема таблицы (на которую ссылается этот столбец) содержит этот столбец под этим именем. Вот как я определил свою сущность в Android

@Entity
public class stops {

@PrimaryKey
@NonNull
@ColumnInfo(name = "s_name")
private String s_name;
@Ignore
@ColumnInfo(name = "s_abb")
private String s_abb;
@Ignore
@ColumnInfo(name = "Comments")
private String Comments;

public String getS_abb() {
    return s_abb;
}

public void setS_abb(String s_abb) {
    this.s_abb = s_abb;
}

public String getS_name() {
    return s_name;
}

public void setS_name(String s_name) {
    this.s_name = s_name;
}

public String getComments() {
    return Comments;
}

public void setComments(String comments) {
    Comments = comments;
}


}

Я протестировал запрос в SQLite Studio и он возвращает ожидаемые данные. Вот снимок экрана запроса, написанного в интерфейсе DAO: Запрос . Я лично считаю, что главная проблема в том, что Room может не распознать псевдонимы, которые я использую в своих подзапросах, и имена столбцов. Правильно ли я думаю об этом? Я надеюсь, что мой скриншот поможет. Я действительно добавил правильный интервал между операторами SQL, как указывалось во многих решениях. Если кому-то из вас понадобится предоставить мне больше информации, я с удовольствием приму! Спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

Как отметил Владимир Гладун, столбец s_abb, к которому я обращался, был установлен с пометкой @Ignore над ним. Что в документации Android по аннотациям @Ignore гласит, что «игнорирует отмеченный элемент из логики обработки Room»: https://developer.android.com/reference/android/arch/persistence/room/Ignore.

Что в основном означает, что Комната игнорирует это полностью.

Однако это была не единственная проблема, мой метод ожидал Entity значений типа тогда как оператор SELECT из моего внешнего запроса возвращал значения типа String. Исправление этих двух ошибок решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...