Resoa Persistence supports SQL like queries to the database, main class for complex data retrieval is org.resoa.grid.RecordSet.

Some examples:

public void recordsetExample (User user, ResoaResponse response, ResoaGateway gateway) {
	// RecordSet examples
	try {
	// Read by regex expression, transmitted within an user name property
	RecordSet processingRules = new RecordSet();
	processingRules.setSQLWhere(surname = 'Smith');
	List<User> userList = gateway.getPersistence().read (User.class, processingRules);	
	precessingRules = RecordSet.getSQLWhereInstance("id like'101%'");
	userList = persistor.read(User.class, processingRules);
	// Read the first 50 matching records
	userList = gateway.getPersistor().read(User.class, processingRules))
	// Continue reading the next records, by comparing the last read key. Works only for BTREE based persistence !
	processingRules = RecordSet.getNextRecordsInstance(processingRules, true);
	userList = gateway.getPersistor().read(User.class, processingRules));
} catch (PersistenceException e) {
	// handle errors here

SQL Where expressions are supported within BTREE key/value databases as well, check the org.resoa.persistence.btree.SqlSelectExpression source file for more information about.