2014-01-30 52 views
4
QueryBuilder<Answer, Integer> queryBuilder = helper.getAnswerDao().queryBuilder(); 
QueryBuilder<Question, Integer> questionQueryBuilder = helper.getQuestionDao().queryBuilder(); 

questionQueryBuilder.where().eq(Question.TYPE_COLUMN_NAME, "table");    
queryBuilder.leftJoin(questionQueryBuilder); 

queryBuilder.where().eq(Answer.PICKED_COLUMN_NAME, true); 

pickedAnswers = queryBuilder.query(); 

生成的SQL語句:Android ORMLite。 LEFT加入。 WHERE子句

SELECT `Answers`.* 
FROM `Answers` 
    LEFT JOIN `Questions` ON `Answers`.`questionId` = `Questions`.`id` 
WHERE `Answers`.`picked` = 1 
    AND (`Questions`.`type` = 'table') 

該查詢返回空結果集,由於 '與' 邏輯運算。這是ORMLite的默認行爲。有沒有可能通過'OR'操作來改變where子句的連接?

我曾嘗試過:queryBuilder.where().or()之前queryBuilder.where().eq(Answer.PICKED_COLUMN_NAME, true)queryBuilder.where().or(2)畢竟where()方法。

回答

4

leftJoinOr方法,正是我所需要的。它用OR邏輯操作構建where子句。