我们正在升级到 hibernate 4.2.5.final 和 Spring 3.2.4 的过程中我们需要删除getHibernateTemplate()
和使用getSessionFactory().getCurrentSession()
. 我只是想知道是否有替代方案getHibernateTemplate().find(query, param);
?例如,项目中有很多类似以下内容:
public List<T> findByQuery(String query, Object... params) {
return getHibernateTemplate().find(query, params);
}
public List<T> findByQuery(String query, Object param) {
return getHibernateTemplate().find(query, param);
}
public List<T> findByQuery(String query) {
return getHibernateTemplate().find(query);
}
调用它们的方法将类似于:
public List<GroupField> find(Group group) {
return findByQuery("from GroupField where group = ? order by id asc", group);
}
我可以做如下的事情:
public List<T> findByQuery(String hql, Object... params) {
Query query = getSessionFactory().getCurrentSession().createQuery(hql);
if (params !=null){
for (int i = 0; i < params.length ; i++) {
query.setParameter (i, params[i]);
}
}
return query.list();
}
但是hibernate会抱怨Positional参数被认为已弃用;请改用命名参数或 JPA 样式的位置参数。
任何帮助将不胜感激
提前谢谢了