2010-07-27 63 views

回答

0

存在在JPQL中是完全合法的,只是使用它。也許我不明白這個問題?這是一個有點簡潔:)

SELECT user 
FROM SOUsers user 
WHERE EXISTS (SELECT user0 
       FROM SOUsers user0 
       WHERE user0 = user.bestFriendWhoAnswersTheirQuestions 
        and user0.name = 'Roman') 
1

首先(我們對Oracle和具有雙重表):

@Entity() 
@Table(name = "DUAL") 
@ReadOnly 
public class Dual { 
    @Id 
    String dummy; 

    public String getDummy() { 
     return dummy; 
    } 
} 

然後:

CriteriaBuilder cb = em.getCriteriaBuilder(); 
CriteriaQuery<Dual> cq = cb.createQuery(Dual.class); 

Subquery<ProtokollSatz> sq = cq.subquery(ProtokollSatz.class); 
Root<ProtokollSatz> root1 = sq.from(ProtokollSatz.class); 
sq.where(
    cb.and(
     cb.equal(root1.<Integer> get("field1"), Integer.valueOf(field1)), 
     cb.equal(root1.<Integer> get("field2"), Integer.valueOf(field2)))); 
cq.where(cb.exists(sq)); 
TypedQuery<Dual> query = em.createQuery(cq); 
boolean ifExists = query.getResultList().size() > 0; 

你得到:

SELECT t0.DUMMY FROM DUAL t0 WHERE EXISTS 
(SELECT ? FROM PROTOKOLL_SAETZE t1 WHERE ((t1.FIELD1 = ?) AND (t1.FIELD2 = ?))) 

用eclipselink測試。