gpt4 book ai didi

java - ORMLite 或跨多个表查询

转载 作者:搜寻专家 更新时间:2023-11-01 00:57:04 24 4
gpt4 key购买 nike

我正在尝试使用 ORMLite 根据连接表中的条件查询表。

下面是我将如何表达我试图在 tsql 中编写的查询:

select * from media m inner join file f on m.fileId = f.fileId
where m.isNew = 1 OR f.isNew = 1

结果应该是媒体记录列表,其中媒体记录或相应文件记录的 isNew = 1。

我已经通读了有关在 ORMLite 中使用 OR 的文档,但所有示例都使用单个表,而不是连接。同样,我已经阅读了有关连接的文档,但没有一个示例包含跨越两个表的 where 子句。除了原始查询之外,还有什么方法可以做到这一点吗?

我看过这个问题:https://stackoverflow.com/a/12629645/874782它似乎问同样的事情,但接受的答案产生一个 AND 查询,而不是 OR。这是我用来检验该理论的代码:

public List<Media> getNewMedia() {
Session session = getSession();
Account account = session.getSelectedAccount();
ContentGroup contentGroup = account.getSelectedContentGroup();

List<Media> results = null;

try {

QueryBuilder<Category, Integer> categoryQueryBuilder = getHelper().getCategoryDao().queryBuilder();
categoryQueryBuilder.where().eq("group_id", contentGroup.getId());

QueryBuilder<MediaCategory, Integer> mediaCatQb = getHelper().getMediaCategoryDao().queryBuilder();
mediaCatQb = mediaCatQb.join(categoryQueryBuilder);

QueryBuilder<FileRecord, Integer> fileQueryBuilder = getHelper().getFileDao().queryBuilder();
fileQueryBuilder.where().ge("lastUpdated", contentGroup.getLastDownload());

QueryBuilder<Media, Integer> mediaQb = getHelper().getMediaDao().queryBuilder();
mediaQb.where().eq("seen", false);
// join with the media query
results = mediaQb.join(fileQueryBuilder).join(mediaCatQb).query();

} catch (SQLException e) {
Log.e(TAG, "Sql Exception", e);
}

return results;
}

为了完成,这是在查询一个比我上面给出的例子稍微复杂的例子,这个用 tsql 表示的例子将是

select * from Media m join FileRecord f on m.fileRecordId = f.fileRecordId
where m.seen = false OR f.lastUpdated >= lastUpdateDate

当我运行它时,它实际上是在执行一个 AND 查询,这是我基于两个具有独立 where 子句的联接所期望的结果。

我认为关键问题是 where 子句本质上与表相关联,因为它是在来自特定于该表的 Dao 的 QueryBuilder 对象上执行的。我该如何解决这个问题?

最佳答案

我认为您正在寻找的是 joinOrORMLite docs 中搜索它.

Like join(QueryBuilder) but this combines the WHERE statements of two query builders with a SQL "OR".

关于java - ORMLite 或跨多个表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18149557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com