Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA标准,其中计数>;0_Jpa_Criteria_Jpa 2.1 - Fatal编程技术网

JPA标准,其中计数>;0

JPA标准,其中计数>;0,jpa,criteria,jpa-2.1,Jpa,Criteria,Jpa 2.1,我有两张桌子: 客户 发票 客户有一个OneToMany关联,用于列出发票 我想使用CriteriaBuilder创建此选择: select ... from Client c where (select count(1) from Invoice i where i.id = c.invoiceId) > 0 我如何才能做到这一点?使用JPQL您可以使用: Query query = em.createQuery ("SELECT c FROM Clien

我有两张桌子:

  • 客户
  • 发票
客户有一个OneToMany关联,用于列出发票

我想使用CriteriaBuilder创建此选择:

select 
   ... 
from 
  Client c 
where 
  (select count(1) from Invoice i where i.id = c.invoiceId) > 0

我如何才能做到这一点?

使用
JPQL
您可以使用:

Query query = em.createQuery
 ("SELECT c FROM Client c WHERE (SELECT COUNT(i) FROM Invoice i WHERE i.client= c) > 0");
List<Client> clientc=query.getResultList());
CriteriaBuilder cb = em.getCriteriaBuilder();  
CriteriaQuery<Client> q = cb.createQuery(Client.class); 
Root<Client> client =  q.from(Client.class); 
q.select(client);

Subquery<Invoice> sq= q.subquery(Invoice.class); 
Root<Invoice> invoice= sq.from(Invoice.class);  
sq.select(invoice);

Predicate sqp = cb.equal(client.get("id"), invoice.get("invoiceId"));
sq.where(sqp);
q.where(cb.exists(sq));