Eclipselink in子句

时间:2018-02-26 14:36:50

标签: java sql jpa eclipselink

我正在尝试在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()来指定要使用的类型。

1 个答案:

答案 0 :(得分:0)

您不能使用逗号分隔的字符串,并且JDBC不支持IN和参数

详细了解您拥有的选项: https://javachannel.org/posts/using-sqls-in-in-jdbc/