Android 在GreenDao中,使用或代替AND构建连接查询
我使用GreenDao v2.1.0生成了一个SQLite数据库。 联系人可以有许多电话号码。 我想进行搜索查询:列出其给定姓名或姓氏或电话号码包含特定单词的所有联系人 例如,如果我使用单词“bob”,则会返回联系人海绵bob。如果我使用“222”这个词,联系人Patrick Star将被返回 由于查询中涉及两个表,因此我使用以下代码求助于连接解决方案:Android 在GreenDao中,使用或代替AND构建连接查询,android,sqlite,orm,greendao,Android,Sqlite,Orm,Greendao,我使用GreenDao v2.1.0生成了一个SQLite数据库。 联系人可以有许多电话号码。 我想进行搜索查询:列出其给定姓名或姓氏或电话号码包含特定单词的所有联系人 例如,如果我使用单词“bob”,则会返回联系人海绵bob。如果我使用“222”这个词,联系人Patrick Star将被返回 由于查询中涉及两个表,因此我使用以下代码求助于连接解决方案: QueryBuilder<Contact> qb = getContactDao(context).queryBuild
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();
第5行指出了问题:“和”接头。我拼命想用“或”来代替它
我错过什么了吗?我可以离开加入解决方案吗?
谢谢:)我也有同样的问题。看来绿岛目前无法做到这一点。我转而使用
queryRaw()
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