2012-04-17 16 views
3

JPQLでこれを行うことはできますか?JPQL JOINSネストSELECT付き

SELECT NEW com.MyDTO(p.a, p.b, q.c, q.d) 
FROM 
(SELECT r.* FROM MyDTO1 r) p 
LEFT OUTER JOIN 
(SELECT s.* FROM MyDTO2 s) q 
ON p.x = q.y 

またはそれに類するもの? (上記のクエリはネイティブとJPQLと混在しているため、誤解しないでください)

私はこの部分に問題があります。

FROM 
(SELECT r.* FROM MyDTO1 r) p 

私はこのエラーが発生しています。

Exception Description: Syntax error parsing the query [.....], unexpected token [(] 

ありがとうございます!

答えて

2

いいえ、できません。 the documentationからの引用:HQLのサブクエリのみ 句を選択またはどこで発生する可能性が

注意。

1

はいできます!

native queriesを使用する必要があります。ここに例があります:

emf = Persistence.createEntityManagerFactory("TEST")  
EntityManager em = emf.createEntityManager(); 
String queryString = "SELECT ID FROM (SELECT * FROM ADDRESS WHERE ID < 0)"; 
Query query = em.createNativeQuery(queryString); 
List<BigDecimal> result = query.getResultList();