如何使用getHibernateTemplate()命名参数

时间:2017-05-05 12:02:40

标签: java spring hibernate

我正在尝试将Hibernate与Spring集成。

这种方法有效:

@Override
public Animal get(long id) {
    List list = getHibernateTemplate().find("from Animal where id=?", id);
    return (Animal) list.get(0);
}

但我有一个

  

警告:[DEPRECATION]遇到位置参数......

因此,位置参数被视为已弃用;我必须使用命名参数或JPA风格的位置参数。

我怎样才能使用" getHibernateTemplate()"?

2 个答案:

答案 0 :(得分:1)

要使用命名参数,您应该使用findByNamedParam,这个也适用:

@Override
public Animal get(long id) {
    List list = this.getHibernateTemplate().findByNamedParam("from Animal where id=:id", "id", id); 
    return (Animal) list.get(0);
}

列出findByNamedParam(String queryString,                          String [] paramNames,                          对象[]值)                   抛出DataAccessException

执行HQL查询,将多个值绑定到查询字符串中的“:”命名参数。

参数:

queryString - 以Hibernate的查询语言

表示的查询

paramNames - 参数名称

- 参数值

答案 1 :(得分:0)

您可以尝试以下代码

@Override
public Animal get(long id) {
    String query = "from Animal where id=:id"
    List list = getHibernateTemplate().findByNamedParam(query, "id", id);
    return (Animal) list.get(0);
}