我试图通过Android中的ORMLite创建搜索界面。创建了3个表,这些表创建了多对多关系。 (配方>> RecipesForTag<< Tag)
tagQueryBuilder.where()
.like(Tag.COLUMN_NAME, "%" + text + "%");
recipesForTagQueryBuilder
.joinOr(tagQueryBuilder);
recipeQueryBuilder
.joinOr(recipesForTagQueryBuilder)
...other joins
.where()
.like(Recipe.COLUMN_TITLE, "%" + text + "%");
PreparedQuery<Recipe> preparedQuery = recipeQueryBuilder.prepare();
return recipeDao.query(preparedQuery);
当我没有使用.joinOr(recipesForTagQueryBuilder)
行时,一切正常。那么我做错了什么?
答案 0 :(得分:1)
好吧,我的坏。 唯一不好的是使用joinOr而我需要leftJoinOr ...这个问题有一个主要问题:当中间表为空时,不会找到结果(当...其他连接是非空的时)。结果很简单:
recipesForTagQueryBuilder
.leftJoinOr(tagQueryBuilder);
recipeQueryBuilder
.leftJoinOr(recipesForTagQueryBuilder)