问题描述
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);
在准备查询之前。
它看起来像内部where
当API表明它应该这样做对象未变异。
有没有其他人经历过同样的事情?
更新
看起来甚至没有调用setWhere()
使它工作。
我以某种方式把它搞砸了我的试验。
1楼
我发现了问题,这是我的错。
在调试时,我多次调用QueryBuilder
对象上的where()
。
但是,正如where
方法的文档所述:
public Where<T,ID> where()
返回一个 Where 对象,该对象应该用于向语句添加 SQL where 子句。 这也将重置 where 对象,以便您可以使用具有不同 where 语句的相同查询构建器。
内部where
对象已被复位。