Caros, criei um endPoint que recebe no postman credittypeVAR = HIP,JUR (que seria uma lista). Isto chega no controler certinho dentro de List(String) credittypeVar. Sendo que quando eu uso na chamada ao repositorio “AND (:credittypeVAR IS NULL OR :credittypeVAR = ‘’” OR credittype IN (:credittypeVAR))" este valor não é consultado eu tenho uma erro oracle.jdbc.OracleDatabaseException: ORA-00920: operador relacional inválido o que pode ser?
Se eu fizer “Matelado” assim “AND (:credittypeVAR IS NULL OR :credittypeVAR = ‘’” OR credittype IN (‘HIP’,‘JUR’))” Funciona. estou a usar o Oracle.
Não dá para parametrizar a clausula IN com listas ou arrays nem no JPA nem no JDBC.
O que eu faço é criar um método para transformar minha lista em uma String contendo os valores a serem consultados no IN e aí concateno essa String na query.
Estou mudando para JPA e Hibe mas tive este erro org.springframework.orm.jpa.JpaSystemException: Unknown wrap conversion requested: java.util.ArrayList to java.lang.String : org.hibernate.type.descriptor.java.StringJavaType (java.lang.String) sabes como resolve?
Usando JPA e Hibernate eu consegui desta forma… mas ainda falta uma coisa. Quando as listas forem nula ou vazia, não deveria fazer o “AND” (pesquisa por tudo) … Já tentei algumas coisas e não consegui ainda.
@Query("SELECT new ReasonCodeCounter(credittype, reasontext, reasoncode, decisionresult, SUM(total))\r\n"
+ "FROM ReasonCodeCounter\r\n"
+ "WHERE createdate >= :startDate AND createdate <= :endDate\r\n"
+ "AND (credittype IN (:credittypeVAR))\r\n"
+ "AND (decisionresult IN (:decisionresultVAR))\r\n"
+ "AND (valoracaoproposta IN (:valoracaopropostaVAR))\r\n"
+ "AND (produto IN (:produtoVAR))\r\n"
+ "AND (regiaobalcao IN (:regiaobalcaoVAR))\r\n"
+ "AND (ctransorigid IN (:ctransorigidVAR))\r\n"
+ "GROUP BY credittype, reasontext, reasoncode, decisionresult")
List<ReasonCodeCounterParent> getOccurrencesOfReasonCodesFilters(LocalDate startDate, LocalDate endDate,
List<String> credittypeVAR, List<String> decisionresultVAR, List<String> valoracaopropostaVAR, List<String> produtoVAR,
List<String> regiaobalcaoVAR, List<String> ctransorigidVAR);