当前位置: 代码迷 >> java >> 这是一个 ORMLite 错误吗?
  详细解决方案

这是一个 ORMLite 错误吗?

热度:63   发布时间:2023-07-18 08:57:51.0

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()使它工作。 我以某种方式把它搞砸了我的试验。

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

public Where<T,ID> where()

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

内部where对象已被复位。