检索具有非空一对多关系的行数
Retrieving number of rows with non-empty one-to-many relation
我正在使用 Play Framework 2 (Java) 和 Ebean。在我的模型 类 中,我有 classA
与 classB
具有一对多关系。 classB
的关联 table 因此有一个字段包含 null
或 classA
实体的 ID。
我想检索有一个或多个关联的 classB
实体的 classA
行数。在 SQL 术语中,我想做的是:
select count(id) from classA where id in (select classA_id from classB);
如何使用 Play Framework/Ebean 执行此操作?
我在想应该有一个内置的方法来执行这个简单的任务,而不是必须使用原始方法 SQL。请注意,从数据库中获取长列表然后计算条目数是不可行的Java:我想让数据库完成工作。
看看 documentation,他们很好地解释了如何构建查询。
int count =
Ebean.find(classB.class)
.fetch("id")
.where("classA_id IS NOT NULL")
.findRowCount();
如果您想要 "distinct" 结果,请将 .setDistinct(true)
添加到查询中。
我正在使用 Play Framework 2 (Java) 和 Ebean。在我的模型 类 中,我有 classA
与 classB
具有一对多关系。 classB
的关联 table 因此有一个字段包含 null
或 classA
实体的 ID。
我想检索有一个或多个关联的 classB
实体的 classA
行数。在 SQL 术语中,我想做的是:
select count(id) from classA where id in (select classA_id from classB);
如何使用 Play Framework/Ebean 执行此操作?
我在想应该有一个内置的方法来执行这个简单的任务,而不是必须使用原始方法 SQL。请注意,从数据库中获取长列表然后计算条目数是不可行的Java:我想让数据库完成工作。
看看 documentation,他们很好地解释了如何构建查询。
int count =
Ebean.find(classB.class)
.fetch("id")
.where("classA_id IS NOT NULL")
.findRowCount();
如果您想要 "distinct" 结果,请将 .setDistinct(true)
添加到查询中。