为什么会发生“无法找到序数参数 [0],需要 [] 之一”?

xyn*_*ynb 6 java hibernate

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

我的查询是:

select result from com.a.b.c.loan.ArchiveHistory result where result.id =?
Run Code Online (Sandbox Code Playgroud)

映射是:

<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>
Run Code Online (Sandbox Code Playgroud)

Ste*_*rnK 10

正如文档中所述:

JPQL 样式的位置参数使用问号后跟序数 - ?1,来声明?2序数以 1 开头。就像命名参数一样,位置参数也可以在查询中出现多次。

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

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

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

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