2017-10-13 59 views
0

我有一個要求使用彈簧數據JPA以獲得單個記錄不使用我使用下面的本機查詢機查詢: -如何讓春季數據JPA單個記錄,而不使用本地查詢

@Query(value="select ET.SOURCE_URI, ET.URI, ET.DATA_SRC, ET.PRCSSR, ET.STAT_CD, ET.TXN_DT, ET.DR_CR_CD ,ET.ORIGINAL_CURR_AMT, ET.UNIQUE_INV_NUM ,ET.CREATED_DT_TM ," + 
       "ET.CREATED_BY_USER_ID, " + 
       "ET.LAST_MOD_DT_TM ,ET.LAST_MOD_USER_ID " + 
       "from ENH_DATA_USER.ENH_TXN ET ,CDF3DBA.FIN_TXN FT where ET.unique_inv_num = FT.unique_inv_num " + 
       "and to_date(ET.TXN_DT) between to_date(FT.TXN_DT)-3 and to_date(FT.TXN_DT) +3 " + 
       "and ET.ORIGINAL_CURR_AMT = FT.ORIGINAL_CURR_AMT and ET.dr_cr_cd = FT.dr_cr_cd and fin_txn_id=? order by ET.TXN_DT asc fetch first 1 row only" , nativeQuery = true) 

EnhancedFinancialTransaction findMatchableEnhancedDataBasedOnFinTxnId(@Param(value = "financialTransactionId") long financialTransactionId); 

這是工作,但如果我使用JPQL和使用取第一排1只JPA是無法識別提取關鍵字和拋出異常。

我有任何替代方式來獲取單個記錄,而不使用讚賞本地查詢。任何幫助。

+0

https://docs.oracle.com/javaee/7/api/javax/persistence/Query.html#setMaxResults-int- –

回答

-1

如果您正在使用,如果你使用的是Oracle,然後使用MYSQL,然後使用「限制1」「這裏的rownum = 1」的JPQL查詢你寫的,應該工作。

否則容易就可以做到這一點的方式也。

Query query=entityManager.createNativeQuery(string sql); 
query.getMaxResults(1);