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

时间:2018-01-18 21:26:38

标签: java mysql null ormlite

是否可以将dao.create()插入null到默认的空整数字段而不是0?

根据文档,canBeNull注释的@DatabaseField参数默认为true,我还没有找到如何将null值作为{{1}提供的方法}参数。

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将尝试将其转换为整数值,以便它可以分配它。只需删除默认值设置即可。