首页 > 解决方案 > 将本机查询移动到 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();

标签: javaoraclehibernatejpa

解决方案


因为你应该打电话:

Query q = entityManager.createNamedQuery(Test.TEST);

并不是

Query q = entityManager.createNativeQuery(Test.TEST);

推荐阅读