gpt4 book ai didi

java - QueryParameterException 即使一切似乎都被正确命名

转载 作者:行者123 更新时间:2023-12-02 09:12:29 25 4
gpt4 key购买 nike

我正在调试以下函数:

public List<ImpPeriode> importPeriode(Integer type, Date dateDebut) {
String sQuery = "from "+ImpPeriode.class.getCanonicalName()+" ip where ip.type = :type and ip.dateDebut > :dateDebut";
Query query = getSession()
.createQuery(sQuery)
.setParameter("type", type)
.setParameter("dateDebut", dateDebut);
return (List<ImpPeriode>) query.list();
}

我的 ImpPeriode 类的映射是:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping schema="importeloi">
<class name="com.an.eloi.model.domaine.importation.ImpPeriode" table="imp_periode">
<id name="id" type="java.lang.Integer">
<column name="periode_id" />
</id>

<property name="type" type="java.lang.Integer">
<column name="periode_type" not-null="true"/>
</property>

<property name="dateDebut" type="java.util.Date">
<column name="periode_datedeb" length="19" not-null="true"/>
</property>

<property name="dateFin" type="java.util.Date">
<column name="periode_datefin" length="19" not-null="true"/>
</property>

</class>
</hibernate-mapping>

但不知何故,我不断收到错误消息,指示我的参数命名中存在错误:

org.hibernate.QueryParameterException: could not locate named parameter [type]

我使用的是 Java 7 和 Hibernate 3.6.10。

显然我错过了一些东西,但是什么呢?

编辑:

我更改了代码以使“type”一词消失:

public List<ImpPeriode> importPeriode(Integer periodeType, Date periodeDateDebut) {
String sQuery = "from "+ImpPeriode.class.getCanonicalName()+" ip where ip.periodeType = :periodeType and ip.periodeDateDebut > :periodeDateDebut";
Query query = getSession()
.createQuery(sQuery)
.setParameter("periodeType", periodeType)
.setParameter("periodeDateDebut", periodeDateDebut);
return (List<ImpPeriode>) query.list();
}

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping schema="importeloi">
<class name="com.an.eloi.model.domaine.importation.ImpPeriode" table="imp_periode">
<id name="periodeId" type="java.lang.Integer">
<column name="periode_id" />
</id>

<property name="periodeType" type="java.lang.Integer">
<column name="periode_type" not-null="true"/>
</property>

<property name="periodeDateDebut" type="java.util.Date">
<column name="periode_datedeb" length="19" not-null="true"/>
</property>

<property name="periodeDateFin" type="java.util.Date">
<column name="periode_datefin" length="19" not-null="true"/>
</property>

</class>
</hibernate-mapping>

可悲的是,我得到了完全相同的错误。

最佳答案

类型是 HQL 中的保留字。如果您重命名字段,它应该可以工作。

关于java - QueryParameterException 即使一切似乎都被正确命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59292691/

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