Можно ли сделать dao.create OrmLite, чтобы вставить нулевое значение в поле int вместо 0?

0

Возможно ли сделать dao.create() вставить null в поле целочисленного значения по умолчанию вместо 0?

canBeNull аргумент @DatabaseField аннотаций по умолчанию истины в любом случае в соответствии с Документами, и я до сих пор найти способ, как кормить null значение в качестве defaultValue аргумента.

Теги:
null
ormlite

1 ответ

1
Лучший ответ

Возможно ли сделать 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 попытается преобразовать его в целочисленное значение, чтобы он мог назначить его. Просто удалите значение по умолчанию, и оно должно работать.

  • 0
    Спасибо. Это работает так же, как вы описали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню