【发布时间】:2015-07-29 06:19:51
【问题描述】:
我们能否创建一个同名但参数不同的 HQL 查询,
并使用findByNamedQueryAndNamedParam() 方法调用它。
但是这个方法的hibernate实现如下。
public List findByNamedQueryAndNamedParam(
final String queryName, final String[] paramNames, final Object[] values)
throws DataAccessException {
if (paramNames != null && values != null && paramNames.length != values.length) {
throw new IllegalArgumentException("Length of paramNames array must match length of values array");
}
return executeWithNativeSession(new HibernateCallback<List>() {
public List doInHibernate(Session session) throws HibernateException {
Query queryObject = session.getNamedQuery(queryName);
prepareQuery(queryObject);
if (values != null) {
for (int i = 0; i < values.length; i++) {
applyNamedParameterToQuery(queryObject, paramNames[i], values[i]);
}
}
return queryObject.list();
}
});
}
那么是否可以创建同名但参数不同的HQL查询,并根据参数动态调用查询?
【问题讨论】: