在我们需要删除getHibernateTemplate()
并使用getSessionFactory().getCurrentSession()
的过程中,我们正在升级到hibernate 4.2.5.final和Spring 3.2.4。我只是想知道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风格的位置参数。
任何帮助都会受到赞赏
非常感谢提前
答案 0 :(得分:0)
您可以执行类似
的操作Query queryObject = session.createQuery(queryString);
for (int i = 0; i < values.length; i++) {
queryObject.setParameter(i, values[i]);
}
}
queryObject.list();