ORMLite - external request field

Using ORMLite for Android, I need to create a query that returns orders by order ID or by customer name. Please consider the following class declarations:

@DatabaseTable(tableName = "order") public class Order { @DatabaseField(generatedId = true) private Long id; @DatabaseField(foreign = true, canBeNull = false, foreignAutoRefresh = true, columnName = "customer_id") private Customer customer; // default constructor, getters and setters... } @DatabaseTable(tableName = "customer") public class Customer { @DatabaseField(generatedId = true) private Long id; @DatabaseField private String name; // default constructor, getters and setters... } 

The raw SQL I'm looking for would be something like this:

 SELECT o.* FROM order o JOIN customer c on o.customer_id = c.id WHERE (o.id = ?) OR (c.name = ?) 

What is the best way to do this with ORMLite?

+7
source share
2 answers

ORMLite now supports simple join requests .

So your query would look something like this:

 QueryBuilder<Customer, Integer> customerQb = customerDao.queryBuilder(); SelectArg nameSelectArg = new SelectArg(); // this gives the c.name = ? customerQb.where().eq("name", nameSelectArg); QueryBuilder<Account, Integer> orderQb = orderDao.queryBuilder(); SelectArg idSelectArg = new SelectArg(); // this gives the o.id = ? orderQb.where().eq("id", idSelectArg); orderQb.join(customerQb); // then you set the args and run the query nameSelectArg.setValue("jim"); idSelectArg.setValue(1); List<Order> results = orderQb.join(customerQb).query(); 
+12
source
0
source

All Articles