 <p>found two ways of achieving my problem </p> <p>1.from @trevjonez(trevor jones)</p> <pre><code>Where&lt;SomeModel&gt; query = SQLite.select() .from(SomeModel.class) .where(SomeModel_Table.date_field.greaterThan(someValue)); if(someCondition) { query = query.and(SomeModel_Table.other_field.eq(someOtherValue)); } else { query = query.and(SomeModel_Table.another_field.isNotNull()); } Cursor cursor = query.query(); //do stuff with cursor and close it — </code></pre> <p>2.from @zshock using ConditionalGroup</p> <pre><code>ConditionGroup conditionGroup = ConditionGroup.clause(); conditionGroup.and(YourTable_Table.id.eq(someId); if (someCondition) { conditionGroup.and(YourTable_Table.name.eq(someName); } return SQLite.select() .from(YourTable.class) .where(conditionGroup) .queryList(); </code></pre>