如何動態地添加NOT IN
條款在原生SQL查詢JPA,使用位置參數在本地查詢中添加'NOT IN'子句?
public final String s = "SELECT * FROM EMPLOYEE WHERE EMPLOYEE_ID NOT IN ?";
public final String e_not_in = "('a', 'b', 'c')";
在Java代碼中
,
List<Employee> el = getEm().createNativeQuery(s).setParameter(1, e_not_in);
但是得到的名單與'a'
,'b'
和'c'
數據,目前有更多的比使用這個常量動態參數的SQL常量中的200個查詢,除了對每個SQL查詢中的NOT IN
子句進行硬編碼或將位置參數更改爲個人之外,是否還有其他解決方法列表項目如EMPLOYEE_ID NOT IN (?1, ?2, ?3)
爲'a'
,'b'
和'c'
,由於問題在生產中,需要立即解決,任何可立即進行更改的解決方案都會有所幫助。
感謝
這些查詢需要由某人改變,你有什麼選擇? –
「問題在於生產」:所以沒有人在釋放之前檢查過它?使用String參數顯然永遠不會實現什麼意圖 –
如果您被困在JPA1中,考慮回到JDBC嗎?我的意思是,從EclipseLink獲得JDBC連接,然後你可以輸入一個List,大概是https://wiki.eclipse.org/EclipseLink/Examples/JPA/EMAPI#Getting_a_JDBC_Connection_from_an_EntityManager –