检索具有非空一对多关系的行数

时间:2015-06-16 10:53:51

标签: playframework playframework-2.3 ebean

我正在使用Play Framework 2(Java)和Ebean。在我的模型类中,我classAclassB具有一对多的关系。因此,classB的关联表格中包含null字段或classA实体的ID。

我想检索有一个或多个关联classA实体的classB行数。在SQL术语中,我想要做的是:

select count(id) from classA where id in (select classA_id from classB);

如何使用Play Framework / Ebean执行此操作?

我认为应该有一个内置方法来执行这个简单的任务,而不必使用原始SQL。请注意,从数据库中获取长列表然后计算Java中的条目数是不可行的:我想让数据库完成工作。

1 个答案:

答案 0 :(得分:1)

看看documentation,他们很好地解释了如何构建查询。

int count = 
   Ebean.find(classB.class)
     .fetch("id")
     .where("classA_id IS NOT NULL")
     .findRowCount();

如果您想要" distinct"结果,将.setDistinct(true)添加到查询中。