这是一个ORMLite错误吗?

时间:2015-07-31 08:38:30

标签: java ormlite

Where API 4.48中有一个关于使用where子句的示例,其完全相同:

QueryBuilder<Account, String> qb = accountDao.queryBuilder();
Where where = qb.where();
// the name field must be equal to "foo"
where.eq(Account.NAME_FIELD_NAME, "foo");
// and
where.and();
// the password field must be equal to "_secret"
where.eq(Account.PASSWORD_FIELD_NAME, "_secret");
PreparedQuery<Account, String> preparedQuery = qb.prepareQuery();

但这对我(java.lang.IllegalStateException: No where clauses defined)不起作用,除非我这样做:

qb.setWhere(where);
在准备查询之前

。当API建议应该这样做时,内部where对象看起来不会发生变异。

还有其他人经历过同样的事吗?

更新

看起来即使调用setWhere()也无法正常工作。我以某种方式把它搞砸了。

1 个答案:

答案 0 :(得分:1)

我发现了问题,这是我的错。在调试时,我多次在where()对象上调用QueryBuilder。但是,正如where方法的文档所述:

  

public Where&lt; T,ID&gt;其中()

     

返回一个Where对象,该对象应该用于在语句中添加SQL where子句。这也将重置where对象,以便您可以使用具有不同where语句的相同查询构建器。

正在重置内部where对象。