请找到我使用的代码。下面的HQL查询失败,说明:
找不到命名参数[templateId]
但是templateId存在于我的模型类中。
请帮助解决问题或获得此类型错误的可能原因:
session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hql ="from FieldTemplate where templateId= :id";
Query query = session.createQuery(hql);
query.setParameter("templateId", id);
List file=query.list();
tx.commit();
return (FieldTemplate) file.get(0);
模型文件
@Entity
@Table(name="EDW_FIELDS")
public class FieldTemplate {
@Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private int Id;
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
@Column(name="TEMPLATE_ID")
private int templateId;
public int getTemplateId() {
return templateId;
}
public void setTemplateId(int templateId) {
this.templateId = templateId;
}
@Column(name="FIELD_NAME")
private String fieldName;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
@Column(name="DISPLAY_ORDER")
private int displayOrder;
public int getDisplayOrder() {
return displayOrder;
}
public void setDisplayOrder(int displayOrder) {
this.displayOrder = displayOrder;
}
}
请帮助解决我的问题
4条答案
按热度按时间clj7thdc1#
如果它帮助了某人,也删除任何;如果你的:param在查询的最后。
例如,您的查询必须是:
而不是
(note the ; at the end)
bwntbbo32#
您的参数名称是
id
而不是templateId
。您必须更改为::
后面的Name是参数名,必须与setParameter()
的第一个参数匹配t3irkdon3#
在query.set中,两个参数都应该匹配
k4emjkb14#
我也遇到了一个问题,很难发现我的查询格式不正确,并且单引号没有结束...
我遇到的错误是它只期望列表中的第二个[firstParamName]
顺便说一句,对于Java代码,我喜欢使用
避免错别字