2014-10-22 86 views
-1

有人可以帮助我吗? 我得到的SQL查询和需要来表示,在JPQL,但我遇到麻烦,右连接:JPQL多JOIN查询

SELECT alrt.* 
FROM 
REACTION.ALERT alrt, REACTION.INVESTIGATION inv, 
REACTION.CLASSIFICATION_TYPE clst, REACTION.FRAUD_TYPE frt, 
REACTION.TRANS trns, REACTION.CARD crd 
WHERE 
    alrt.ISS_INST IN(1201, 1101) AND 
    alrt.MODULE_TYPE = 0 AND 
    0 < (SELECT COUNT(*) FROM REACTION.INVESTIGATION WHERE REACTION.INVESTIGATION.ALERT_ID = alrt.ID) AND 
    inv.CLASSIFICATION_TYPE_ID IS NOT NULL AND 
    clst.CLASSIFICATION_TYPE = 10 AND 
    (alrt.REMINDER_USER_LOGIN = 'qwr' OR alrt.REMINDER_USER_LOGIN IS NULL) AND 
    alrt.ID = inv.ALERT_ID AND 
    alrt.TRANSACTION_ID = trns.ID(+) AND inv.CLASSIFICATION_TYPE_ID = 
    clst.ID AND inv.FRAUD_TYPE_ID = frt.ID(+) AND trns.HPAN = crd.HPAN(+); 

读教程和文档之后,我创建JPQL查询:

SELECT alrt 
    FROM INVESTIGATION inv 
     JOIN inv.CLASSIFICATION_TYPE_ID clst 
     RIGHT JOIN inv.FRAUD_TYPE_ID frt 
     JOIN inv.alert_id alrt 
     RIGHT JOIN alrt.transactio_id trns 
     RIGHT JOIN trns.HPAN crd 
    WHERE 
     alrt.ISS_INST IN(1201, 1101) AND 
     alrt.MODULE_TYPE = 0 AND 0 < (SELECT COUNT(inv1) FROM INVESTIGATION inv1 WHERE inv1.ALERT_ID = alrt.ID) AND 
     inv.CLASSIFICATION_TYPE_ID IS NOT NULL AND 
     clst.CLASSIFICATION_TYPE = 2 AND 
     (alrt.REMINDER_USER_LOGIN = 'qwr' OR alrt.REMINDER_USER_LOGIN IS NULL); 

但我得到了错误,然后尝试执行该操作。有人可以告诉我做错了吗? 如果它是有道理的我使用JPA 1.0版本

+2

你可以发布你得到的错误吗? – jmvivo 2014-10-22 08:01:14

+0

好吧,我会在一个小时内添加错误文本,对不起 – MeetJoeBlack 2014-10-22 08:24:10

回答

0

您的错误是加入ID,但不是OR映射对象。 试试这个:

JOIN inv.CLASSIFICATIONTYPE(your mapping property name) clst 

如果妳没有实体之间的映射关系,u'd更好的用户连接表i.o. OR映射。 阅读更多有关JPQL的信息