gpt4 book ai didi

java - 如何使用 ORMLite 原始查询获取正确的 boolean 字段值?

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:16 25 4
gpt4 key购买 nike

我正在使用 ORMLite 和 Java 中的 H2 数据库,并且我有一个带有 boolean 字段的类。当我使用原始查询和 DAO 的默认原始行映射器从数据库中获取此类的对象时,返回对象中 boolean 字段的值始终为 false。 (这些值以 TINYINT 类型存储在数据库中。)

这是一个例子:

public class BooleanPersistenceWithRawQueries {

@DatabaseTable
public static class George {
@DatabaseField(generatedId = true) public Integer id;
@DatabaseField public boolean curious;
}

public static void main(String[] args) throws Exception {
ConnectionSource connectionSource = new JdbcConnectionSource("jdbc:h2:mem:");
Dao<George, ?> dao = DaoManager.createDao(connectionSource, George.class);
TableUtils.createTable(connectionSource, George.class);
George g = new George();
g.curious = true;
dao.create(g);
George h = dao.queryRaw("SELECT * FROM George", dao.getRawRowMapper()).getFirstResult();
System.out.println("curious = " + h.curious + " should be " + g.curious);
}
}

输出为

curious = false should be true

我知道我可以子类 RawRowMapperImpl 来覆盖此行为,但是是否有内置方法来配置对象映射(例如 @DatabaseField 注释设置),以便将 1TINYINT 值解析为 true

最佳答案

我有同样的问题并解决了它,感谢卡米拉,但他的答案在这种情况下不正确。你必须写:

@DatabaseField(dataType=DataType.BOOLEAN_INTEGER)

关于java - 如何使用 ORMLite 原始查询获取正确的 boolean 字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38361990/

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