作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我用 GreenDao v2.1.0 生成了一个 SQLite 数据库。 Here is its diagram (a tiny piece of it)
一个联系人可以有多个电话号码。我想进行搜索查询:列出 GIVEN_NAME 或 FAMILY_NAME 或 PHONE.NUMBER 包含特定字词的所有联系人。
例如,with these entries ,如果我使用单词“bob”,将返回联系 Sponge Bob。如果我使用“222”这个词,将返回联系人 Patrick Star。
由于查询涉及到两个表,所以我用这段代码求助于JOIN方案:
QueryBuilder<Contact> qb = getContactDao(context).queryBuilder();
qb.whereOr(ContactDao.Properties.Given_name.like("%" + word + "%"),
ContactDao.Properties.Family_name.like("%" + word + "%"));
qb.join(Phone.class, PhoneDao.Properties.Contact_id)
.where(PhoneDao.Properties.Number.like("%" + word + "%"));
List<Contact> contacts = qb.list();
这会生成以下 SQL:
SELECT T."_id", T."GIVEN_NAME", T."FAMILY_NAME"
FROM "CONTACT" T
JOIN PHONE J1
ON T."_id"=J1."CONTACT_ID"
WHERE (T."GIVEN_NAME" LIKE ? OR T."FAMILY_NAME" LIKE ?) AND J1."NUMBER" LIKE ?
COLLATE LOCALIZED ASC
第 5 行指出了问题:“AND”连接器。我拼命想用“或”代替它。
我错过了什么吗?我应该离开 JOIN 解决方案吗?谢谢:)
最佳答案
我也遇到了同样的问题。看来greendao目前做不到。我改用 queryRaw()
。
关于android - 在 GreenDao 中,使用 OR 而不是 AND 构建连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043891/
我是一名优秀的程序员,十分优秀!