org.hibernate.QueryParameterException:找不到命名参数[templateId]

时间:2016-06-20 06:32:47

标签: java hibernate

请找到我使用的代码。 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 个答案:

答案 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 参数中两者都应该匹配