我正在尝试在eclipselink JPA中使用in子句,但没有任何工作
final String parameterizedQuery = "Select * FROM sap.Preco WHERE cliente_id = ?clienteId and numero_material in ( ?numeroMaterial )";
listPreco = em.createNativeQuery(parameterizedQuery)
.setParameter("clienteId", clienteId).setParameter("numeroMaterial", produtoId)
.getResultList();
produtoId id是一个逗号分隔值的字符串
String produtoId = StringUtils.join(listMaterial, "','");
或
String produtoId = StringUtils.join(listMaterial, ",");
两者都不起作用,这是日志:
选择 *来自sap.Preco WHERE cliente_id =? (?)bind =>中的和numero_material [0000006775,000000000000100003,000000000000100003]
已经尝试使用列表作为参数但不起作用。
内部异常:org.postgresql.util.PSQLException:无法推断用于java.util.ArrayList实例的SQL类型。使用具有特定值类型的setObject()来指定要使用的类型。
答案 0 :(得分:0)
您不能使用逗号分隔的字符串,并且JDBC不支持IN和参数
详细了解您拥有的选项: https://javachannel.org/posts/using-sqls-in-in-jdbc/