我用的是带android的ormlite。我想获取对象的id值w/最高值的id。
我还想将其推广到为任意字段请求单个对象w/max/min值。这样做的最佳实践是什么?
我知道我可以执行一个原始查询,但有没有其他方法可以跳出任何人?在ios上的coredata中执行fetch请求时,我想象的是类似于谓词的东西。

最佳答案

你的回答看起来不错,但是我想我会给后人一些额外的信息:
如果您知道queryForFirst将返回单个结果,则可以使用limit(1)

qBuilder.orderby("my_field_column_name", false);
qBuilder.limit(1L);
MyEntity maxEntity = myEntityDao.queryForFirst(qBuilder.prepare());

原始查询也可以工作。它包含更多的对象和检查,但如果表的大小很大,则会更便宜,因为您不需要进行排序。
qBuilder.selectRaw("MAX(my_field_column_name)");
GenericRawResults<String[]> results =
    myEntityDao.queryRaw(qBuilder.prepareStatementString());
String[] result = results.getResults().next();
int max = Integer.parseInt(result[0]);

显然,如果您的列是一个不同的类型,那么您将从result[0]中得到一个不同的对象,您必须根据对象将其转换为适当的类型。

10-08 15:00