Возможно ли сделать dao.create()
вставить null
в поле целочисленного значения по умолчанию вместо 0?
canBeNull
аргумент @DatabaseField
аннотаций по умолчанию истины в любом случае в соответствии с Документами, и я до сих пор найти способ, как кормить null
значение в качестве defaultValue
аргумента.
Возможно ли сделать dao.create() вставить нуль в поле целочисленного значения по умолчанию вместо 0?
Конечно.
Мне еще предстоит найти способ подачи значения null - value как аргумент defaultValue.
По умолчанию любому неинициализированному полю должно быть присвоено значение типа по умолчанию в базе данных. Например, поле int
без значения, установленного на нем при создании объекта, должно получить значение 0 в базе данных. С любым полем объекта (таким как Integer
) значение по умолчанию уже равно null
. Все, что вам нужно сделать, это не предоставлять defaultValue
.
Например, для меня работает следующий код:
public class Foo {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField // no default-value specified
private Integer someIntegerField;
}
...
Foo foo = new Foo();
// leave someIntegerField as a null value without a default-value defined
assertEquals(1, dao.create(foo));
Foo result = dao.queryForId(foo.id);
assertNotNull(result);
// by default the field that we did not initialize comes back as null
assertNull(result.someIntegerField);
Если вы укажете значение по умолчанию, тогда ORMLite попытается преобразовать его в целочисленное значение, чтобы он мог назначить его. Просто удалите значение по умолчанию, и оно должно работать.