我可以在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
或类似? (上面的查询混合了native和JPQL,所以不要误解)
我觉得这个部分有问题。
FROM
(SELECT r.* FROM MyDTO1 r ) p
当我试图执行时,我收到了这个错误。
Exception Description: Syntax error parsing the query [.....], unexpected token [(]
谢谢!
答案 0 :(得分:4)
请注意,HQL子查询只能在select或where中出现 条款。
答案 1 :(得分:2)
是的,你可以!
您必须使用 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();