Не удается найти классы "*_Table" для DBFlow в Android (Studio)

Я пытаюсь использовать библиотеку DBFlow в Android. Я использовал его раньше, а в более старой версии (2.2.1) он использовал поле $Table.field. Теперь у него, похоже, есть другой формат, в котором мы ссылаемся на новый класс с помощью _Table.

Пример:

int taxBracketCount = SQLite.select(count(Employee_Table.name))
.from(Employee.class)
.where(Employee_Table.salary.lessThan(150000))
.and(Employee_Table.salary.greaterThan(80000))
.count();

Где и когда создаются эти классы "_Table"? Как я могу получить к ним доступ? (Даже если бы я захотел использовать и более старую версию, мой недавно созданный студийный проект также не создает файлы $. Некоторые объяснения этого или того и другого было бы неплохо)

5 ответов

Вам нужно запустить успешную сборку для файлов, которые будут сгенерированы. Убедитесь, что ваш код может компилироваться, поэтому удалите все ссылки на классы "_Table" и сначала запустите ваш проект, а затем вы сможете получить к ним доступ.

Недавно я получил странные ошибки, как показано ниже, сказал, что не может найти эти классы "$Table", но на самом деле они были созданы и там.

Я комментировал и раскомментировал все новые файлы Java. И в конце концов я обнаружил, что в одном классе модели DBFlow нет "@PrimaryKey".

Итак, вы должны определить кровавый "@PrimaryKey" для ваших классов модели DBFlow (и не забывайте также расширять BaseModel). PS: DBFlow версия 3.0.0-бета

/Users/XXX/code_projects/###/src/main/java/com/XXXXX.java:9: error: cannot find symbol
import com.XXX.databasemodel.XXX$Table

_Table классы и их соответствующие методы для связи с базой данных создаются при создании вашего проекта. Вы можете построить его даже с этими ошибками, и они будут созданы в этот момент.

Если вы все еще сталкиваетесь с проблемой, убедитесь, что вы добавляете аннотацию @Table поверх вашего класса, иначе они не будут созданы.

Итак, я также столкнулся с подобной проблемой -

И, как кто-то еще указал, приложение должно быть создано, чтобы решить эту проблему. Но сначала удалить все ссылки и удалить их — долгая задача. Я выполнил следующие шаги -

  1. пытаться rebuildприложение, оно потерпит неудачу
  2. Теперь отправляйтесь в Problemsвкладка в Android Studio
  3. Попытайтесь определить любые проблемы, кроме _table- исправьте эту проблему и соберите заново - вуаля!

Я столкнулся с той же проблемой, но причиной было отсутствие аннотации

@Table(databaseName = AppDatabase.NAME)

на вершине

public class AwesomeModel extends BaseModel 
    @PrimaryKey(autoincrement = false)
    @Column @Expose long id;

    public long getId() {
        return id;
    }
}

учебный класс...

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