Ormlite加入3个表(多对多)

时间:2014-03-28 14:45:02

标签: android ormlite

我试图通过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)行时,一切正常。那么我做错了什么?

1 个答案:

答案 0 :(得分:1)

好吧,我的坏。 唯一不好的是使用joinOr而我需要leftJoinOr ...这个问题有一个主要问题:当中间表为空时,不会找到结果(当...其他连接是非空的时)。结果很简单:

recipesForTagQueryBuilder
    .leftJoinOr(tagQueryBuilder);

recipeQueryBuilder
    .leftJoinOr(recipesForTagQueryBuilder)