Spring5 hibernate模板的findByNamedQueryAndNamedParam方法的替代方案

时间:2018-03-06 03:03:11

标签: java spring hibernate spring-data

到目前为止,我在Spring HibernateTemplate中使用了findByNamedQueryAndNamedParam来处理namedqueries。 Spring5 deprecated this method ..

将来它可能会被删除,findByNamedQueryAndNamedParam有哪些替代解决方案? 请帮我这方面..

示例:

public Child getChildByNameWithToys(String childName) {
  return (Child) getHibernateTemplate().findByNamedQueryAndNamedParam(
    Child.Constants.FIND_CHILD_BY_NAME_QUERY,
    Child.Constants.CHILD_NAME_PARAM, childName).get(0);
 }

1 个答案:

答案 0 :(得分:1)

上面的代码应该改为使用HibernateCallback,如下所示。

public Child getChildByNameWithToys(String childName) {
    List<Child> list = getHibernateTemplate().execute(new HibernateCallback<List<Child>>() {
        public List<Child> doInHibernate(Session session) throws HibernateException {
            return getSession().getNamedQuery(Child.Constants.FIND_CHILD_BY_NAME_QUERY)
                    .setParameter(Child.Constants.CHILD_NAME_PARAM, childName)
                    .list();
        }
    });

    if (list != null && list.size() > 0)
        return list.get(0);
    else return null;
}