我不确定我错过了什么,但我没有关于如何在Where语句中使用or()
函数Query中的ORMlite。ORMlite QueryBuilder其中A和B和C和(D或E或F)
我有一个查询,我希望它是:
where A and B and C and (D or E or F)
但代码是什么发生的是:
where (A and B and C and D) or E or F
不仅D
越来越附带and
条款,但E
和F
未分组,意味着任何匹配E
的行将被retu但我需要A
,B
和C
作为所有行的要求。
我已经看过ORMlite示例代码和or()
函数的描述,但它们似乎都集中在(A and B) or (C and D)
场景,这不是我想要做的。我试图弄清楚代码应该如何适用于我的情况,但它确实是错误的,所以我不知道我在如何使用or()
函数时缺少什么概念。
任何帮助?
protected void addWhereClauses(Where<Sheep, Integer> whereClause) throws SQLException {
whereClause
.eq("owner_id", this.owner.getId()) // A
.and()
.isNull("markedfordeletiondate") // B
.and()
.eq("isownedbyme", this.currentlyShowingSheepMine); // C
String filterstring = getFilterString();
if (filterstring != null) {
filterstring = "%"+filterstring+"%";
whereClause.and()
.or(
whereClause.like("name", filterstring), // D
whereClause.like("tag", filterstring), // E
whereClause.like("scrapietag", filterstring) // F
)
;
}
}
编辑:我知道生成的查询是什么样子,因为我抓住它,它登录到控制台:
String sql = queryBuilder.prepareStatementString();
Log.d("BFLF", "sql: "+sql);
你怎么知道这是生成的?纯粹基于结果? –
我正在查询构建器吐出原始SQL,以便我可以看到它用于调试目的。我用我用来记录sql语句的代码更新了上面的帖子。 –
如果or()方法需要很多参数,我个人并不认为你有什么问题。尝试在ormlite网站上发布错误报告?如果这实际上是一个错误,是否可以切换到另一个ORM解决方案? –