0
我有一个JPA查询:JPA查询:JOIN问题
<named-query name="AUDIT_QUERY">
<query>
select rx.rxNumber, rx.rxFillStatus.id, tx.rx.rxaaId, tx.id, tx.drugUpc.id,
tx.compound.id, tx.tpSpecialServiceFee.id,tx.txHistoryDrugUpc.id,
tx.txHistoryCompound.id, tx.txHistoryTpSpecialServiceFee.id,
tx.txHistoryRx.id, tx.txNumber,tx.txStatus.id,tx.txAdjudicationStatus.id,
tx.serviceDate, tx.createDatetime, tx.txQuantity, tx.remainingQuantity, tx.daysSupply,
tx.ppTotal, tx.tpPaidTotal, tx.adjustedTotal, sig.sigDescriptionStoreLanguage ,
sig.sigDescriptionPatientLanguage , tx.serviceDate
from
Rx rx JOIN FETCH Tx tx JOIN TxSig sig WHERE rx.rxaaId = tx.rx.rxaaId
and tx.txSig.id = sig.id WHERE
rx.patient.id = ?
order by tx.serviceDate desc, tx.txNumber desc,
tx.id desc
</query>
</named-query>
在解析时,Hibernate会抛出错误:
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: WHERE near line 1, column 620 [select rx.rxNumber, rx.rxFillStatus.id, tx.rx.rxaaId, tx.id, tx.drugUpc.id, tx.compound.id, tx.tpSpecialServiceFee.id,tx.txHistoryDrugUpc.id, tx.txHistoryCompound.id, tx.txHistoryTpSpecialServiceFee.id, tx.txHistoryRx.id, tx.txNumber,tx.txStatus.id,tx.txAdjudicationStatus.id, tx.serviceDate, tx.createDatetime, tx.txQuantity, tx.remainingQuantity, tx.daysSupply, tx.ppTotal, tx.tpPaidTotal, tx.adjustedTotal, sig.sigDescriptionStoreLanguage , sig.sigDescriptionPatientLanguage , tx.serviceDate from com.sdm.hw.rx.dao.entity.Rx rx JOIN FETCH Tx tx JOIN TxSig sig WHERE rx.rxaaId = tx.rx.rxaaId and tx.txSig.id = sig.id WHERE rx.patient.id = ? order by tx.serviceDate desc, tx.txNumber desc, tx.id desc]
任何帮助将不胜感激。
谢谢, Giriraj
感谢您的回复。但JPA 2.0使用WHERE来代替ON。 JPA 2.1草案中提出了ON。 – user1752663
@ user1752663你有这方面的来源吗?我很难相信这一点。如果是这样的话,那么选择的自然加入将是不可能的。你只有一个'WHERE',并且不知道它是否是连接标准或选择。 –