gpt4 book ai didi

android - 在 GreenDao 中,使用 OR 而不是 AND 构建连接查询

转载 作者:IT王子 更新时间:2023-10-29 06:29:44 25 4
gpt4 key购买 nike

我用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com