Hibernate Exception - 无法找到命名参数[:laboratoryId]

时间:2015-05-14 08:06:00

标签: java hibernate orm parameters hql

我在Hibernate中有以下查询。我得到了Hibernate Exception,我不明白为什么Hibernate会抛出这个异常。有谁可以帮助我?

Session session = this.sessionFactory.openSession();

session.createQuery("delete from Laboratory l where l.id=:laboratoryId")
        .setParameter("laboratoryId", laboratoryId).executeUpdate();
session.close();

3 个答案:

答案 0 :(得分:0)

尝试在=符号和绑定名称:laboratoryId之间添加一些空格并删除别名:

Session session = this.sessionFactory.openSession();

session.createQuery("delete from Laboratory where id = :laboratoryId")
    .setParameter("laboratoryId", laboratoryId)
    .executeUpdate();
session.close();

答案 1 :(得分:0)

你确定laboratoryID有价值吗?对于我的查询构建器,我使用了这样的东西:

if (!laboratoryId.isEmpty()) { 
        query.setParameter("laboratoryId", laboratoryId());
        }

查询同样如此

  "delete o from Laboratory o"

if(!laboratoryId.isEmpty()){
query.append("where o.id = (:laboratoryId)")

}

但是我将它用于字符串值

请显示laboratoryId的代码 - 是用户输入还是什么?

答案 2 :(得分:0)

你可以试试这个。

删除条款

DELETE子句可用于删除一个或多个对象。以下是使用DELETE子句的简单语法:

String hql = "DELETE FROM Employee "  + 
         "WHERE id = :employee_id";
Query query = session.createQuery(hql);
query.setParameter("employee_id", 10);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);