findCount

执行计数查询。

int count =

  new QCustomer()
  .name.icontains("foo.bar")
  .findCount();

Ebean 将根据需要修改查询 select 子句,执行 select count(*) 类型查询。

select count(*)
from customer t0
where lower(t0.name) like ? escape'|'

“多路径”

当谓词包含 多路径(在下面的示例中,“contacts”是一个 @OneToMany)时,Ebean 将使用带有 count distinct 的子查询。

int count =

   new QCustomer()
    .contacts.firstName.istartsWith("rob")
    .findCount();

上述查询包含一个 contacts 的 多路径,因此 SQL 变为

select count(*)
from (
  select distinct t0.id
  from customer t0 join contact u1 on u1.customer_id = t0.id
  where lower(u1.first_name) like ? escape'|'
) as c; --bind(rob%)