Frage

I currently have a list of userIds and I am trying to create a query to get all of those from my DB.

this is what I have in mind, I'm just not that sure that it's possible:

ArrayList<Users> listOfUsers = getCurrentUsers(); 
// lets assume that by now I have a list of users
QueryBuilder<Users> qb = getUsersDao().queryBuilder();
for(Users usr : listOfUsers) {
    qb.where(Properties.userId.eq(usr.getUserId());
}
List result = qb.list();

I haven't seen any documentation about what is the right way of doing this and I want to know if this is the correct way of creating a dynamic query in GreenDAO.

EDIT:

I tried this and the result was a NullPointerException in the line of the declaration on the QueryBuilder

War es hilfreich?

Lösung

try using the IN query instead, it will run faster + you can cache your Query object. so lets say you have

List<String> userIds;

you can get the list with:

qb.where(Properties.UserId.in(userIds))

if this is an operation that you do frequently, it is better to cache the Query. to do that, prepare the query as follows for only once:

Query<User> query = qb.where(Properties.UserId.in("?")).build();

then when you need to run it :

query.setParameter(0, userIds);
return query.list();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top