What is the best way for querying by using the value of foreign object's field?
Suppose I have these three classes.
UnitResult class which describes amount of Units:
@DatabaseTable
public class UnitResult {
public static final String ID_FIELD_NAME = "id";
public static final String UNIT_COLUMN_NAME = "unit";
public static final String RESULT_COLUMN_NAME = "result";
@DatabaseField(generatedId = true, columnName = ID_FIELD_NAME)
public Integer id;
@DatabaseField(foreign = true, canBeNull = false, columnName = UNIT_COLUMN_NAME)
public Unit unit;
@DatabaseField(canBeNull = true, columnName = RESULT_COLUMN_NAME)
public Integer result = null;
}
Unit class which describes certain Units in a market (for example jiuce, snack etc.):
@DatabaseTable
public class Unit {
public static final String ID_FIELD_NAME = "id";
public static final String TYPE_FIELD_NAME = "type";
@DatabaseField(id = true, columnName = ID_FIELD_NAME)
public int id;
@DatabaseField(canBeNull = false, columnName = TYPE_FIELD_NAME)
public UnitType type;
}
And Enum of Unit type:
public enum UnitType {
JUICES,
DRINKS,
SNACKS,
NPD;
}
So how can I query all UnitResult
where Unit
type is UnitType.JUICES
?
The way to do this in ORMLite is to use the `Where.in(...) with a sub-query: