java - QueryParameterException even if everything seems to be named properly
问题描述
I'm debugging the following function:
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();
}
The mapping for my ImpPeriode class is:
<?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>
but somehow, I keep getting an error indicating an error in my parameter naming:
org.hibernate.QueryParameterException: could not locate named parameter [type]
I'm using Java 7 and Hibernate 3.6.10.
Obviously I'm missing something, but what?
Edit:
I changed the code in order to make the word "type" disappear:
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();
}
and
<?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>
Sadly, I get exaclty the same error.
解决方案
类型是 HQL 中的保留字。如果您重命名您的字段,它应该可以工作。
推荐阅读
- javascript - 使用 Javascript 在 HTML 中添加换行符
- python - 如何将具有“结束”和“开始”行的事件数据框转换为按事件数据框重新组合的事件数据框?
- zsh - 过去 x 个月内最常用的命令
- delphi - Delphi 10.3 中的 TCoolBar 带调整问题
- php - 可以存在于多个模型上的关系的一个或多个模型/表
- java - 如何在camunda中建模异步服务任务并在spring boot中实现
- python - 基于 sklearn ColumnTransformer 的预处理器在训练和测试数据集上输出不同的列
- python - 使用 sklearn_pandas 查找 k-means 聚类最重要的词
- python - 有没有办法在窗口内实现倒计时,而不会冻结窗口?
- regex - pandas 根据其他列中的数据过滤列中的文本