带有join和where子句子查询的JPQL查询

时间:2015-12-04 18:00:44

标签: jpa jpa-2.0 jpql

我是JPQL的新手,我正在尝试编写一个连接查询,该查询从where子句中的子查询中获取结果。我有这样的lloks:

Query query = em.createQuery("SELECT distinct pt.srcCanum FROM Pmt pt " + 
            "LEFT OUTER JOIN pt.txnhistPK ps " +                     
            "WHERE  " +
            "pt.isudDt > '2015-08-01' and pt.certdDt is null " + 
            "OR ps.pmtUid = "+
            "ALL(SELECT pq.pmtUid FROM txnhistPK pq" +
            "WHERE pq.pmtChngTs  > '2015-08-01')");

但它不起作用。我尝试了许多不同的方法,但没有工作。请帮忙。

堆栈跟踪: javax.ejb.EJBException:参见嵌套异常;嵌套异常是:org.apache.openjpa.persistence.ArgumentException:"遇到" ps。 pmtUid存在"在角色131,但预期:["("," *"," +"," - ",&# 34;。"," /",":","<","< =" ,"<>"," =",">","> =",&#34 ;?"," ABS"," ALL"," AND"," ANY"," AS&#34 ;," ASC"," AVG"," BETWEEN"," BOTH"," BY",&#34 ; CONCAT"," COUNT"," CURRENT_DATE"," CURRENT_TIME"," CURRENT_TIMESTAMP"," DELETE" ," DESC"," DISTINCT"," EMPTY"," ESCAPE"," EXISTS"," FETCH"," FROM"," GROUP"," HAVING"," IN"," INNER", " IS"," JOIN"," LEADING"," LEFT"," LENGTH"," LIKE& #34;," LOCATE"," LOWER"," MAX","会员"," MIN",& #34; MOD"," NEW"," NOT"," NULL"," OBJECT"," OF&# 34;," OR",&#34 ; ORDER"," OUTER"," SELECT"," SET"," SIZE"," SOME" ," SQRT"," SUBSTRING"," SUM"," TRAILING"," TRIM"," TYPE"," UPDATE"," UPPER"," WHERE" ,,,,,,,,,。"解析JPQL" SELECT distinct pt.srcCanum FROM Pmt pt LEFT OUTER JOIN pt.txnhistPK ps WHERE pt.isudDt> ' 2015年8月1日'并且pt.certdDt为空或者ps.pmtUid存在ALL(SELECT pq.pmtUid FROM txnhistPK pqWHERE pq.pmtChngTs>' 2015-08-01')"。有关原始解析错误,请参阅嵌套堆栈跟踪。

字符131是OR之后的ps in ps。不需要发布实体来理解。首先,它们是巨大的。这是一个简短的纲要:pmt有一个pmtUid和srcCanum。 txnhist保存对pmt的更改,并包含一个包含pmtUid和pmtChngTs的复合键(txnhistPK)。当满足查询中的条件时,我需要来自两个表的结果。

0 个答案:

没有答案
相关问题