gpt4 book ai didi

android - rawQuery 中的 ORMLite 别名

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:17 26 4
gpt4 key购买 nike

是否可以在 Android 中的 ORMLite 查询中使用别名 (AS)?我正在尝试将它与以下代码一起使用:

String query =
"SELECT *, (duration - elapsed) AS remaining FROM KitchenTimer ORDER BY remaining";
GenericRawResults<KitchenTimer> rawResults =
getHelper().getKitchenTimerDao().queryRaw(
query, getHelper().getKitchenTimerDao().getRawRowMapper());

但是当这段代码被执行时,它给出了以下错误:

java.lang.IllegalArgumentException: Unknown column name 'remaining' in table kitchentimer

最佳答案

java.lang.IllegalArgumentException: Unknown column name 'remaining' in table kitchentimer

与您的 KitchenTimerDao 关联的原始行映射器期望结果直接对应于 KitchenTimer 实体列。但是,由于您正在添加 remaining 列,因此没有地方可以放置该结果列,因此出现异常。这是一个原始查询,因此您需要提出自己的结果映射器——您不能使用 DAO 的。查看docs on raw queries .

例如,如果您想将结果映射到您自己的对象 Foo 中,那么您可以这样做:

String query =
"SELECT *, (duration - elapsed) AS remaining FROM KitchenTimer ORDER BY remaining";
GenericRawResults<Foo> rawResults =
orderDao.queryRaw(query, new RawRowMapper<Foo>() {
public Foo mapRow(String[] columnNames, String[] resultColumns) {
// assuming 0th field is the * and 1st field is remaining
return new Foo(resultColumns[0], Integer.parseInt(resultColumns[1]));
}
});
// page through the results
for (Foo foo : rawResults) {
System.out.println("Name " + foo.name + " has " + foo.remaining + " remaining seconds");
}
rawResults.close();

关于android - rawQuery 中的 ORMLite 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31745039/

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