gpt4 book ai didi

android - 将空值加载到原始类型中

转载 作者:行者123 更新时间:2023-11-29 14:01:34 24 4
gpt4 key购买 nike

我正在尝试使用 ormlite 查询方法将数据库行加载到 DO 对象中。我面临的问题是数据库中的空值映射到 DO 对象中的 Wrapper 类型字段。空字段作为 0 填充到 DO 中,这打乱了我的业务逻辑。

有什么方法可以使 ormlite 将这些字段填充为 null 而不是 0。

我的示例 DO 结构:

@DatabaseTable(tableName="PERSON")
public class Person
{
@DatabaseField(columnName="NAME", dataType=DataType.STRING, useGetSet=true)
private String name;

@DatabaseField(columnName = "AGE", dataType = DataType.SHORT, useGetSet = true)
private Short age;

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

public Short getAge()
{
return age;
}

public void setAge(Short age)
{
this.age = age;
}
}

我用来加载对象的 DAO 代码是:

person = queryForEq("NAME", someName).get(0);

总而言之,在 Person 类中,如果人员的年龄在 SQLite 数据库中存储为 null,则 ormlite 在查询对象时填充为 0。我想避免这种情况并确保年龄设置为空。有什么办法可以实现吗?

最佳答案

此处正确的做法是不要将 dataType 指定为 @DatabaseField 注释的一部分。 ORMLite然后将正确使用 DataType.SHORT_OBJ 字段类型。由于您要覆盖默认字段类型并说 Short 字段实际上是原始字段,如果 ORMLite did 为其分配空值,则会导致 NPE,因此它分配0 代替。您的数据对象应该是:

@DatabaseField(columnName="NAME", useGetSet=true)
private String name;

@DatabaseField(columnName = "AGE", useGetSet = true)
private Short age;

实际上,您永远不需要指定 dataType,除非您正在覆盖某些内容,或者如果 ORMLite 无法做出良好的自动类型确定(例如:byte[])。

关于android - 将空值加载到原始类型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9260761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com