sql >> Database >  >> RDS >> Oracle

Hoe gebruik je een dynamische parameter in een IN-clausule van een JPA-query met de naam?

JPA ondersteunt het gebruik van een verzameling als een letterlijke parameter voor een lijst alleen in JPQL-query's, niet in native query's. Sommige JPA-providers ondersteunen het als een propriëtaire functie, maar het maakt geen deel uit van de JPA-specificatie (zie https://stackoverflow.com/a/3145275/1285097).

Benoemde parameters in native query's maken ook geen deel uit van de JPA-specificatie. Hun gedrag hangt af van de persistentieprovider en/of het JDBC-stuurprogramma.

Slaapstand met het JDBC-stuurprogramma voor Oracle ondersteunt beide functies.

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();


  1. Wat is database-sharding?

  2. Oracle-weergave meer dan 24 uur

  3. Een lijst met triggergebeurtenissen retourneren in SQL Server

  4. Hoe de bindValue-methode toe te passen in de LIMIT-clausule?