Oracle
 sql >> Database >  >> RDS >> Oracle

Come utilizzare un parametro dinamico in una clausola IN di una query denominata JPA?

JPA supporta l'uso di una raccolta come parametro letterale elenco solo nelle query JPQL, non nelle query native. Alcuni provider JPA lo supportano come funzionalità proprietaria, ma non fa parte della specifica JPA (vedi https://stackoverflow.com/a/3145275/1285097).

Anche i parametri denominati nelle query native non fanno parte della specifica JPA. Il loro comportamento dipende dal provider di persistenza e/o dal driver JDBC.

Sospensione con il driver JDBC per Oracle supporta entrambe queste funzionalità.

List<String> selectedValues = Arrays.asList("STRING1", "STRING2");
final String parameterizedQuery = "select * from SOMETABLE where SOMEFIELD in (:selectedValues)";
return em.createNativeQuery(parameterizedQuery)
         .setParameter("selectedValues", selectedValues)
         .getResultList();