Android select语句中的三元运算符
我正在尝试执行一个查询,该查询在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
选择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;
//....