java—可以让ormlite的dao.create将空值插入int字段而不是0吗?

gwo2fgha  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(280)

有没有可能 dao.create() 插入 null 输入默认的空整数字段而不是0?
这个 canBeNull 论据 @DatabaseField 根据文档,注解默认为true,我还没有找到一种方法来输入 null 价值观 defaultValue 争论。

sqougxex

sqougxex1#

是否可以使dao.create()将null插入默认的null整数字段而不是0?
当然是。
我还没有找到一种方法如何将null值作为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将尝试将其转换为一个整数值,以便它可以分配它。只需删除默认值设置,它应该可以工作。

相关问题