gpt4 book ai didi

java - 将列表参数设置为 native 查询

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:25 25 4
gpt4 key购买 nike

我想将参数设置为原生查询,

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'??\0♣sr\0‼java.util.ArrayListx??↔??a?♥\0☺I\0♦sizexp\0\0\0☻w♦\0\0\0t\0
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 ?")

有什么方法可以为 native 查询设置列表参数,而不转换为字符串并将其附加到 sql 查询?

附言我使用的是 EclipseLink 2.5.0 和 MySQL 服务器 5.6.13

谢谢

最佳答案

我相信您只能将列表参数设置为 JPQL 查询,而不是 native 查询。

要么使用 JPQL,要么使用列表动态构建 SQL。

关于java - 将列表参数设置为 native 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18701946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com