dao.create()
将null
插入默认的空整数字段而不是 0?
根据文档,@DatabaseField
注释的canBeNull
参数无论如何默认为 true,我还没有找到如何将null
值作为defaultValue
参数提供的方法。
是否可以使 dao.create(( 将 null 插入到默认的 null 整数字段中而不是 0?
是的,你可以这样做。
我还没有找到一种方法来输入 null - 值作为默认值 - 参数。
默认情况下,应在数据库中为任何未初始化的字段分配该类型的默认值。 例如,创建实体时未设置任何值的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);
// by default the field that we did not initialize comes back as null
assertNull(result.someIntegerField);
如果您提供默认值,则 ORMLite 将尝试将其转换为整数值,以便它可以分配它。 只需删除默认值设置,它应该可以工作。