Android select语句中的三元运算符

Android select语句中的三元运算符,android,android-sqlite,ormlite,Android,Android Sqlite,Ormlite,我正在尝试执行一个查询,该查询在select语句中包含一个三元运算符: 选择id, 内存id, 案例 当单词_to=?那么你的话 还有什么要说的吗 结束 来自翻译 其中单词_to=? 或者单词_from=? 如何使用QueryBuilder对象构建这样的查询?我试过: public List<Translation> findMeanings(long wordId) { try { Dao<Translation, Long> transla

我正在尝试执行一个查询,该查询在select语句中包含一个三元运算符:

选择id,
内存id,
案例
当单词_to=?那么你的话
还有什么要说的吗
结束
来自翻译
其中单词_to=?
或者单词_from=?
如何使用
QueryBuilder
对象构建这样的查询?我试过:

public List<Translation> findMeanings(long wordId) {

    try {
        Dao<Translation, Long> translations = getDao(Translation.class);
        QueryBuilder<Translation, Long> queryBuilder = translations.queryBuilder();
        String id = Long.toString(wordId);

        queryBuilder.selectRaw(DBColumns.ID, DBColumns.MEMORY_ID, "CASE WHEN word_to="+id+" THEN word_from ELSE word_to END");
        queryBuilder.where().eq(DBColumns.WORD_TO, id).or().eq(DBColumns.WORD_FROM, id);

        return queryBuilder.query();
    } catch (SQLException e) {
        Logger.error("db", e.getMessage(), e);
    }
    return new ArrayList<Translation>();
}
其中,BaseEntity是:

public class BaseEntity {

    @DatabaseField(generatedId = true, unique = true)
    protected long id; 
    //....
无法编译此SELECT_RAW语句,因为调用方需要SELECT语句。检查您的QueryBuilder方法

只要调用
qb.selectRaw(…)
您就需要使用
qb.queryRaw(…)
而不是
query()
。这在以下文件中提到:

向查询中添加原始列或聚合函数(COUNT、MAX等)这将使查询变成只适合Dao.queryRaw(String,String…)类型语句的查询。可以多次调用该查询以添加更多要选择的列

通常,
selectRaw(…)
与某种聚合函数一起使用,如
COUNT()
MAX()
,因此与
query()
返回的实体类型不兼容

public class BaseEntity {

    @DatabaseField(generatedId = true, unique = true)
    protected long id; 
    //....