是否可以将dao.create()
插入null
到默认的空整数字段而不是0?
根据文档,canBeNull
注释的@DatabaseField
参数默认为true,我还没有找到如何将null
值作为{{1}提供的方法}参数。
答案 0 :(得分:1)
是否可以使dao.create()将null插入到默认的空整数字段而不是0?
当然是。
我还没有找到如何将null-value作为defaultValue参数提供的方法。
默认情况下,应为任何未初始化的字段分配该类型在数据库中的默认值。例如,创建实体时没有设置值的Integer
字段应该在数据库中获得值0。对于任何对象字段(例如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);
。
例如,以下代码适用于我:
{{1}}
如果您提供默认值,那么ORMLite将尝试将其转换为整数值,以便它可以分配它。只需删除默认值设置即可。