首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipselink in子句

Eclipselink in子句
EN

Stack Overflow用户
提问于 2018-02-26 14:36:50
回答 2查看 1.5K关注 0票数 0

我试着在eclipselink JPA中使用in子句,但是什么都没有用

代码语言:javascript
复制
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是一个带有逗号分隔值的字符串。

代码语言:javascript
复制
String produtoId = StringUtils.join(listMaterial, "','");

代码语言:javascript
复制
String produtoId = StringUtils.join(listMaterial, ",");

两者都不能工作,这是日志:

从sap.Preco选择* cliente_id =?和numero_material in (?)绑定=> 0000006775,000000000000100003,000000000000100003

已尝试使用列表作为参数,但不起作用。

内部异常: org.postgresql.util.PSQLException:无法推断要用于java.util.ArrayList实例的SQL类型。使用具有特定值类型的setObject()指定要使用的类型。

EN

回答 2

Stack Overflow用户

发布于 2018-02-26 14:54:02

不能使用逗号分隔的字符串,而且JDBC不支持带参数的IN。

阅读更多关于您所拥有的选项的信息:https://javachannel.org/posts/using-sqls-in-in-jdbc/

票数 0
EN

Stack Overflow用户

发布于 2018-02-26 16:49:54

尝试移除命名参数周围的括号:

代码语言:javascript
复制
final String parameterizedQuery = "Select * FROM sap.Preco WHERE cliente_id = ?clienteId and numero_material in  ?numeroMaterial ";

并将字符串列表作为参数传递:

代码语言:javascript
复制
em.setParameter("numeroMaterial", listMaterial);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48990932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档