java - 将本机查询移动到 NamedNativeQuery 后,具有该位置 [1] 的参数不存在?
问题描述
当我将 JPA 本机查询移动到命名查询时,为什么我会收到以下错误?
java.lang.IllegalArgumentException: Parameter with that position [1] did not exist
不工作查询:
@NamedNativeQuery(
name = Test.TEST,
query = "SELECT * FROM test_table where id = ?",
Query q = entityManager.createNativeQuery(Test.TEST);
q.setParameter(1, 362L);
List<Object> result = q.getResultList();
这有效:
Query q = entityManager.createNativeQuery("SELECT * FROM test_table where id = ?");
q.setParameter(1, 362L);
List<Object> result = q.getResultList();
解决方案
因为你应该打电话:
Query q = entityManager.createNamedQuery(Test.TEST);
并不是
Query q = entityManager.createNativeQuery(Test.TEST);
推荐阅读
- node.js - PassportJS 未对用户进行身份验证
- asynchronous - N 进程障碍问题:在关键代码发出信号之后等待更好吗?
- swift - Xcode 中的 Swift 内存位置 - 字符串摘要
- django - 从 Django 中的表单数据读取 CSV 文件时出现“ValueError: I/O operation on closed file”
- java - 如何在无向图中获取从源到目的地的路径计数(基于非零)?
- swift - 为什么不工作 == 在两个相似的日期之间
- javascript - 有没有办法在带有反应的消息中添加文本
- monero - jtgrassie monero-pool 我的哈希率始终为 0
- javascript - 尝试显示隐藏文字,文字不断消失
- r - 具有间歇行变量的整齐数据