Java 如何通过外部对象的值选择来构建查询';s场

Java 如何通过外部对象的值选择来构建查询';s场,java,android,ormlite,query-builder,Java,Android,Ormlite,Query Builder,使用外来对象字段的值进行查询的最佳方式是什么 假设我有这三门课 描述单位数量的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_N

使用外来对象字段的值进行查询的最佳方式是什么

假设我有这三门课

描述单位数量的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;
}
单元类,描述市场中的特定单元(例如酒类、零食等):

和单元类型的枚举:

public enum UnitType {
    JUICES,
    DRINKS,
    SNACKS,
    NPD;
}
那么如何查询所有
UnitResult
其中
Unit
类型为
UnitType.juice

那么,在UnitType为UnitType.JUICES的情况下,如何查询所有UnitResult

在中执行此操作的方法是使用:

//首先在Unit表上设置子查询
QueryBuilder uQb=unitDao.QueryBuilder();
uQb.where().eq(Unit.TYPE\u FIELD\u NAME,UnitType.juice);
//UnitResult表的外部查询
QueryBuilder urQb=unitResultDao.QueryBuilder();
//在使用子查询时
urQb.where().in(UnitResult.UNIT_COLUMN_NAME,uQb);
List results=urQb.query();

非常感谢你,格雷!尊重奥姆莱特图书馆!:)这似乎不再有效。由于id列是自动添加到查询中的,因此它抛出“SQLException,内部查询必须只指定1个select列,而不是*”。后续:我相信目的是现在使用联接。
public enum UnitType {
    JUICES,
    DRINKS,
    SNACKS,
    NPD;
}
// 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();