Как создать запрос с выбором значения поля постороннего объекта

Каков наилучший способ запроса с использованием значения поля постороннего объекта?

Предположим, что у меня есть эти три класса.

Класс UnitResult, который описывает количество единиц:

@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; } 

Класс единицы, который описывает определенные единицы на рынке (например, jiuce, snack и т. Д.):

 @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; } 

И Enum of Unit тип:

 public enum UnitType { JUICES, DRINKS, SNACKS, NPD; } 

Итак, как я могу запросить все UnitResult где тип UnitUnitType.JUICES ?

    Итак, как я могу запросить все UnitResult, где тип Unit – UnitType.JUICES?

    Способ сделать это в ORMLite – использовать `Where.in (…) с подзапросом :

     // setup our sub-query on the Unit table first QueryBuilder<Unit,Integer> uQb = unitDao.queryBuilder(); uQb.where().eq(Unit.TYPE_FIELD_NAME, UnitType.JUICES); // outer query on UnitResult table QueryBuilder<UnitResult,Integer> urQb = unitResultDao.queryBuilder(); // in using the sub-query urQb.where().in(UnitResult.UNIT_COLUMN_NAME, uQb); List<UnitResult> results = urQb.query();