Не удается найти классы "*_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 поверх вашего класса, иначе они не будут созданы.
Итак, я также столкнулся с подобной проблемой -
И, как кто-то еще указал, приложение должно быть создано, чтобы решить эту проблему. Но сначала удалить все ссылки и удалить их — долгая задача. Я выполнил следующие шаги -
- пытаться
rebuild
приложение, оно потерпит неудачу - Теперь отправляйтесь в
Problems
вкладка вAndroid Studio
- Попытайтесь определить любые проблемы, кроме
_table
- исправьте эту проблему и соберите заново - вуаля!
Я столкнулся с той же проблемой, но причиной было отсутствие аннотации
@Table(databaseName = AppDatabase.NAME)
на вершине
public class AwesomeModel extends BaseModel
@PrimaryKey(autoincrement = false)
@Column @Expose long id;
public long getId() {
return id;
}
}
учебный класс...