hibernate 为什么会出现“Could not locate ordinal parameter [0],expecting one of []”?

odopli94  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(1305)

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

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

Map为:

<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>
4ioopgfo

4ioopgfo1#

正如文档中所述:
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 );

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

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

相关问题