7

Can I do something like this on JPQL?

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 

or similar? (Above query has mixed with native and JPQL, so don't misunderstand)

I'm having a problem with this part I think.

FROM
(SELECT r.* FROM MyDTO1 r ) p

When I'm trying to execute I'm getting this error.

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

Thank you!

4

2 に答える 2

5

いいえ、できません。ドキュメントからの引用:

HQL サブクエリは、select または where 句でのみ発生することに注意してください。

于 2012-04-17T07:12:23.923 に答える
2

はい、できます!

ネイティブ クエリを使用する必要があります。次に例を示します。

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();
于 2012-11-23T08:58:09.603 に答える