java - 为什么会发生 "Could not locate ordinal parameter [0], expecting one of []"?

标签 java hibernate

我使用 Hibernate 作为 ORM。当我搜索这个错误时,据说我的问题是由于映射,但我检查了它并没有发现任何问题

我的查询是:

select result from com.a.b.c.loan.ArchiveHistory result where result.id =?

映射是:

<hibernate-mapping>
<class name="com.a.b.c.loan.ArchiveHistory" mutable="false" table="ARCT_HISTORY_VIEW">

        <id name="id" column="BIBLIOGRAPHICID" type="long" unsaved-value="0">
        </id>
    </class>
</hibernate-mapping>

最佳答案

正如 documentation 中所述:

JPQL-style positional parameters are declared using a question mark followed by an ordinal - ?1, ?2. The ordinals start with 1. Just like with named parameters, positional parameters can also appear multiple times in a query.

因此,尝试以这种方式重写您的查询:

Query query = entityManager.createQuery(
   "select result from com.a.b.c.loan.ArchiveHistory result where result.id =?1"
).setParameter( 1, 23L );

或者,作为更具可读性的替代方案,我建议使用名称绑定(bind)参数:

Query query = entityManager.createQuery(
   "select result from com.a.b.c.loan.ArchiveHistory result where result.id = :id"
).setParameter("id", 23L );

关于java - 为什么会发生 "Could not locate ordinal parameter [0], expecting one of []"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68619839/

相关文章:

Java 整数内存分配

java - JPA-存储库保存 : Proceed saving after insert Constraint violation

java - Libgdx 数组 |删除全部导致错误

java - 使用 hibernate 以两个列表作为参数从数据库获取对象

java.lang.NullPointerException 因为我没有访问该表的权限

hibernate - HQL 比较日期

java - 如何显示旋转 180 度左右的 Android UI 元素

java - 在 Java 中使用递归打印素数

java - 保持多对多关系时出现 PropertyAccessException

hibernate - JPQL:如何“选择新的 Foo(null,null...someValue,..)?