Я пытаюсь создать и получить некоторые данные в базе данных Android SQLite.queryForAll возвращает null идентификаторы с ORMLite Android
Когда я добавляю данные с помощью , создайте метод, объекты будут правильно обновлены (задан длинный идентификатор). Но тогда, когда я беру данные с помощью метода queryAll, объекты возвращаются правильно, за исключением атрибута id, который приходит как null. Я использую DatabaseField тег с generatedId атрибут установлен в истинное, так же, как говорится в документации:
generatedId
Boolean ли поле является полем идентификатор генерируется автоматически. По умолчанию false. Только одно поле может иметь этот набор в классе. Это сообщает базе данных , чтобы автоматически генерировать соответствующий идентификатор для каждой вставленной строки. Когда объект сгенерированным идентификатором создается с использованием метода Dao.create() , база данных будет генерировать идентификатор для строки, которая будет возвращена и задана в объекте методом create. В некоторых базах данных требуются последовательности для сгенерированных идентификаторов, и в этом случае имя последовательности будет автоматически сгенерировано. Чтобы указать имя последовательности, используйте createdIdSequence. Только один из этих, id и сгенерированный идентификатор может быть указан . См. Раздел Поля With generatedId.
Там мой класс:
@DatabaseTable(tableName = "LANGUAGE")
public class Language {
@DatabaseField(generatedId = true, columnName = "language_id")
private Long id;
@DatabaseField(columnName = "language_locale")
private String locale;
@DatabaseField(columnName = "language_active")
private boolean active;
@DatabaseField(columnName = "language_name")
private String name;
// getters and setters...
}
Я вставляя данные, как это:
Language pt = new Language();
pt.setActive(true);
pt.setName("Português");
pt.setLocale("pt_PT");
dao.create(pt);
Language en = new Language();
en.setActive(true);
en.setName("English");
en.setLocale("en_EN");
dao.create(en);
// here, both pt and en have an id, 1 and 2, respectively
Но когда я исполню
dao.queryForAll()
локали, активные и имя атрибуты приходит нормально, но id равно null.
Любые идеи? Я уже пытался позвонить совершить после создать, но ничего не меняется.
Вы уверены, что ваш файл конфигурации базы данных полностью обновлен? Я никогда не видел и не слышал об этом, особенно в поле id. Работает ли 'dao.queryForId (...)', но не заполняет идентификатор? – Gray
queryForId (передача id 1, например) возвращает null.Это очень странно, кажется, что метод create выполняет эту работу, но тогда база данных хранит объект без id ... для моего опыта я должен иметь небольшую ошибку и только найду его через try-error ... любая помощь оценивается – rmpt
И идентификаторы назначаются правильно/последовательно с помощью метода create, поэтому кажется, что сущности фактически находятся в базе данных. Считаете ли вы, что это может быть проблема с кешем? – rmpt