当前位置: 首页 > 知识库问答 >
问题:

查询参数异常: 找不到命名参数 [模板 Id]

邢修明
2023-03-14

请找到我使用过的代码。以下HQL查询失败,说明:

找不到命名参数 [模板 Id]

但是模板 Id 存在于我的模型类中。

请帮助解决问题或可能导致此类错误的原因:

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;
    }
}

请帮助解决我的问题

共有3个答案

魏烨熠
2023-03-14
String hql ="from FieldTemplate where templateId= :id";
Query query = session.createQuery(hql); 
query.setParameter("id", id);

在查询中。设置两个参数都应匹配

司徒耀
2023-03-14

您的参数名是id而不是templateId。您必须更改为:

String hql ="from FieldTemplate where templateId= :id";
Query query = session.createQuery(hql);
query.setParameter("id", id);

后面的Name是参数名称,必须与setParameter()的第一个参数匹配

仇和蔼
2023-03-14

如果它帮助某人,也删除任何;如果您的:p在查询的最后。

例如,您的查询必须是:

Select * from blah where param = :param

而不是

Select * from blah where param = :param; 

(请注意结尾处的“;”

 类似资料:
  • 我的项目设置是Spring MVC,Hibernate 3.2.x,在 MySQL 数据库上 收到以下错误: org.hibernate.QueryParameterException:无法找到命名参数电子邮件 方法#1: 方法#2: 错误: java.lang.IllegalArgumentException:参数email不作为命名参数存在于[fromcom.cmgr.beans.UserAc

  • 我有以下查询: 执行查询时,我得到以下异常: java.lang.非法参数异常: 组织.Hibernate.查询参数异常: 找不到命名参数 [startDate] 您能告诉我的查询有什么问题吗?

  • 我有一个疑问 但是在使用hibernate执行查询时,我收到 org.hibernate.QueryParameterException:无法定位命名参数[age] 怎么了?

  • 问题内容: 谁能指出我如何将order by子句作为命名参数传递给HQL? 有效的示例: 无效的示例: 问题答案: 不支持,只能在and 子句中使用输入参数,并且不能为子句使用参数。或者,如果我改写,您不能对列使用参数,只能对值使用。因此,要么: 有尽可能多的命名查询排序顺序 将排序字符串连接到查询字符串 使用条件查询

  • 问题内容: 嗨,我有一个命名查询 我想这样设置限制: 但这在服务器启动时显示错误。我正在使用以下代码在DAO类中调用查询: 需要设置开始和结束参数。请帮忙。 问题答案: 正如@DataNucleus所说,LIMIT在JPQL中不是有效的关键字。这不是指定要返回多少行的方法。这是您的操作方式: 这将是调用命名查询的代码:

  • 错误:运算符不存在:uuid=bytea 有什么建议吗?