加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将列表参数设置为本机查询

发布时间:2020-12-15 00:42:50 所属栏目:Java 来源:网络整理
导读:我想将参数设置为本机查询, javax.persistence.EntityManager.createNativeQuery 这样的事情 Query query = em.createNativeQuery("SELECT * FROM TABLE_A a WHERE a.name IN ?");ListString paramList = new ArrayListString();paramList.add("firstValue")
我想将参数设置为本机查询,
javax.persistence.EntityManager.createNativeQuery

这样的事情

Query query = em.createNativeQuery("SELECT * FROM TABLE_A a WHERE a.name IN ?");
List<String> paramList = new ArrayList<String>();
paramList.add("firstValue");
paramList.add("secondValue");
query.setParameter(1,paramList);

尝试此查询会导致异常:

Caused by: org.eclipse.persistence.exceptions.DatabaseException:
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
You have  an error in your SQL syntax; check the manual that corresponds to your MySQL server 
version for the right syntax to use near
'_binary'???sr?java.util.ArrayListx?????a???I?sizexp?w?t
f' at line 1
Error Code: 1064
Call: SELECT * FROM Client a WHERE a.name IN ?
        bind => [[firstValue,secondValue]]
Query: ReadAllQuery(referenceClass=TABLE_A sql="SELECT * FROM TABLE_A a WHERE a.name IN ?")

是否可以为本机查询设置列表参数,而不是强制转换为字符串并将其附加到sql查询?

附:我使用EclipseLink 2.5.0和MySQL服务器5.6.13

谢谢

解决方法

我相信你只能将列表参数设置为JPQL查询,而不是本机查询.

使用JPQL,或使用列表动态构造SQL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读