gpt4 book ai didi

java - Hibernate setParemeter 是从 1 开始还是从 0 开始?查询参数异常

转载 作者:行者123 更新时间:2023-12-01 22:06:44 25 4
gpt4 key购买 nike

假设其他一切都像魅力(实体、命名查询、 native 命名查询)一样工作,我在尝试运行以下查询时遇到奇怪的异常,其中日期列类型为TIMESTAMP:

@NamedNativeQuery(name = "problematicQuery", query = "DELETE FROM mytable WHERE date < ?")

我尝试使用以下代码执行此查询,其中日期是java.sql.Timestamp:

Query deleteQuery = em.createNativeQuery("problematicQuery");
deleteQuery.setParameter(1, date);
deleteQuery.executeUpdate();

此代码会导致以下异常:

org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1

当我将中间代码行更改为:

Query deleteQuery = em.createNativeQuery("problematicQuery");
deleteQuery.setParameter(0, date);
deleteQuery.executeUpdate();

我会在不同的位置得到相同的异常:

org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 0

我使用的是 JBoss 7.2.0.Final(Hibernate 版本是 4.2.0.CR1)、Oracle 11g。

哪里出了问题?我错过了什么吗?

最佳答案

看来你使用的方式不对

em.createNamedQuery("problematicQuery")

而不是

em.createNativeQuery("problematicQuery");

在您的情况下,从字符串“problematicQuery”创建的查询不存在参数

关于java - Hibernate setParemeter 是从 1 开始还是从 0 开始?查询参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32605899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com