Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在GreenDao中,使用或代替AND构建连接查询_Android_Sqlite_Orm_Greendao - Fatal编程技术网

Android 在GreenDao中,使用或代替AND构建连接查询

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

我使用GreenDao v2.1.0生成了一个SQLite数据库。

联系人可以有许多电话号码。 我想进行搜索查询:列出其给定姓名或姓氏或电话号码包含特定单词的所有联系人

例如,如果我使用单词“bob”,则会返回联系人海绵bob。如果我使用“222”这个词,联系人Patrick Star将被返回

由于查询中涉及两个表,因此我使用以下代码求助于连接解决方案:

    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