我正在使用 ORMLite 处理本地数据库,但遇到一个自定义查询问题。
我需要得到一行,其中某列的值在表中最常见。
例如我有一列 text
并且我有 3 行的值为 text0
,4 行的值为 text1
和 5 行的值为 text2
。我需要获取 text
列中具有值 text2
的行之一。
我可以使用 ORMLite 的查询生成器来做这件事还是我应该运行一个原始查询?
这是原始的 sql 查询,它工作正常并返回字符串数组。
Dao<Case, Long> caseDao = getHelper().getCaseDao();
GenericRawResults<String[]> cases = caseDao.queryRaw("SELECT * ," +
" COUNT('name') AS 'name_occurrence'" +
" FROM 'MEDICAL_CASE'" +
" GROUP BY 'name'" +
" ORDER BY 'name_occurrence' DESC" +
" LIMIT 1", new String[]{});
获取字符串后,我必须创建我的模型实例、设置值并使用该对象执行 jon。
但这有点难看,这就是为什么我要问是否可以使用 ormlite 的方法。
最佳答案
Can I do this with ORMLite's query builder or I should run a raw query?
任何不是实体的结果都需要通过 ORMLite 的 dao.queryRaw(...)
方法来完成。如果您可以使用 SQL 来完成,那么您也可以通过这些方法来完成。
参见:http://ormlite.com/docs/raw-queries
您不能使用标准实体映射器,因为您正在执行 SELECT *, COUNT('name')
。 ORMLite 不知道如何处理 COUNT(...)
字段。
关于android - ORMLite 搜索具有最常见列的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32604993/