请找到我使用的代码。 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;
}
}
请帮助解决我的问题
答案 0 :(得分:4)
您的参数名称为id
而不是templateId
。你必须改为:
String hql ="from FieldTemplate where templateId= :id";
Query query = session.createQuery(hql);
query.setParameter("id", id);
:
之后的名称是参数名称,必须与setParameter()
答案 1 :(得分:1)
您可以更改以下行:
String hql ="from FieldTemplate where templateId= :id";
以下行:
String hql ="from FieldTemplate where templateId= :templateId";
并查看结果?
答案 2 :(得分:1)
如果它对某人有帮助,也可以删除任何人;如果你的:param位于查询的最后。
例如,您的查询必须是:
Select * from blah where param = :param
而不是
Select * from blah where param = :param;
(注意;最后)
答案 3 :(得分:0)
String hql ="from FieldTemplate where templateId= :id";
查询查询 = session.createQuery(hql);
query.setParameter("id", id);
在 query.set 参数中两者都应该匹配