I have a List of Strings each String is a unique identifier for a item persisted through GreenDao.
How do I build a query that allows me to load all this items form my database?
Is there a possibility to do it with a QueryBuilder or do I need to go back to writing SQL?
This is possible with the in condition in the Property class.
This example loads all boxes with field values contained in fieldValues
. fieldValues
is of the type List<String>
List<LocalBox> boxes = getBoxDao(context).queryBuilder()
.where(LocalBoxDao.Properties.field.in(fieldValues)).list();
I would like to put some light in "in query",
There is a limitation in this, we cant pass more than 100 ids inside a in query
So what I did to achieve this is:
List<Product> productList = new ArrayList<Product>();
DaoSession daoSessionUni = TarneaAndroidApplicationContext.getInstance().getDaoSession();
for (int i = 0; i < rowIds.size(); i = i + 100)
{
ProductDao productDao = daoSessionUni.getProductDao();
QueryBuilder<Product> queryBuilder = productDao.queryBuilder().where(
ProductDao.Properties.Id.in(rowIds.subList(i + 100 < rowIds.size() ?
i + 100 :
rowIds.size())),
ProductDao.Properties.IsDeleted.eq(0));
productList.addAll(queryBuilder.list());
}
if we want to pass a list of id using in Query we can use this method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With